                            -*- text -*-

During Q1 2010, my CollabNet colleagues and I (C. Michael Pilato)
invited select customers (deemed to be generally representative of our
vast Subversion customer base) to participate in one-on-one meetings
around the general topic of version control.  All of these customers
are Subversion users; some of them are using it alongside other
version control systems.  Customers were asked to share openly about
what is missing from their version control experience.  The persons or
teams that I spoke with were knowledgable enough to identify what
would constitute a "core Subversion feature" or "core Subversion fix",
so most of the responses were self-limited to complaints or
suggestions about Subversion itself.  Some folks took us up on the
offer to speak about their version control experience in general, so
we got some feedback that might be best evaluated by, for example, the
TortoiseSVN project or CollabNet internal Engineering staff.

In all, I met (via teleconference) with 11 customer teams, and
received additional feedback from others via email.  Customers
provided wishlists of various sizes -- from only a couple of items to
as many as 15 identified as important enough to draw attention to in
our meetings.  Some identified the relative priorities of their
wishlist items; some did not.  None were privy the requests that other
customers had made -- we wanted to first understand what was annoying
them enough to stay in foremost in their minds (and not "lead the
witness").  (We will revisit every one of these customers with an
aggregate list of requests so they can each take a pass at
prioritizing the lot of them.)

What follows here is a summary of what I learned in the process, plus
the aggregated list of wishlist items (post-processed to add some
additional organization to the thoughts shared).



GENERAL TAKEAWAYS
=================

Subversion remains the version control system of choice for the
enterprise.  There is grassroots pressure from the lower ranks to give
DVCS a spin, but it's almost universally the case that the love for
DVCS comes not because of the distributed model itself, but from some
of the secondary features and behaviors of those systems: better
performance of day-to-day operations, better merge handling, better
handling of renamed items, and support for offline commits.
Interestingly, Subversion is where it is today inside most of these
shops largely because of similar grassroots pressure in favor of
Subversion over closed-source systems over the past six years.  An
interesting difference, though, is that Subversion's model to date has
always been in line with the basic needs of the enterprise, offering
centralized storage, path-based authorization, and so on.  DVCS tools,
on the other hand, stand opposed (by their very design) to some of
those core requirements, much to the chagrin of managers and auditing
bodies alike.

Enterprises are united in the desire to see Subversion continue to
push beyond mere "best of open source version control systems" status
and into a dedicated courtship of the enterprise user base and
administrators.  Install bases of thousands of users across multiple
geographical locations beg for sheer power, user simplicity, and
administrative control.  Some items that were commonly cited along
these lines include the following:

   * Performance:  Make it faster.  Then make it faster again.

   * Enterprise-class authentication and authorization:  Subversion
     should be able to work with other services on the corporate
     network.  Single sign-on (SSO), LDAP, Kerberos, etc.

   * Server-side control of client-side behaviors:  Admins want to know
     that every Subversion user has the same configuration for simple
     things like auto-props rules, and want to be able to control
     things like our "store-plaintext-passwords" toggles remotely in a
     way that's not easily override-able.

   * Improved branching and merging: Everybody loves merge tracking
     and tree conflicts.  That is, when they don't hate it.
     Subversion should be smarter, and *must* learn to gracefully deal
     with renames.

I didn't meet a single angry customer.  Were some of them frustrated
by certain shortcomings in Subversion?  Certainly.  But many expressed
strong support for Subversion, even saying outright that they would
gladly suffer 2.0 migration pains if it meant getting these features
into their hands faster.



WISHLIST ITEMS
==============

Performance

   Client Performance

   * Faster checkouts
   * Faster history browsing (log, etc.)
   * Faster merging
   * Better performance with large binaries
   * Reuse authenticated sessions

   HTTP Performance

   * Better overall speed (close gap with svnserve)
   * Alleviate path-based authorization logic performance penalties
   * Fully support caching web proxies

Security

   * Server-governed enterprise password caching solution
   * Kerberos support
   * Support for LDAP groups with path-based permissioning
   * ACL support with more fine-grained operational control
   * Bug: Update pulling new file copied from unreadable branch fails

Server Features

   * Server-governed configuration (per repository)
   * Forward history tracing (for tree conflicts, repos browsing, etc.)

Distribution

   * First-class support for clustering
   * Open source multi-site solution
   * Bug: "Chunk delimiter was invalid" seen in svnsync of large commits
   * svnsync performance
   * Write-thru proxy support for svnserve

Client Features

   Sparse Checkouts

   * Search-based sparse working copy population
   * Sparsely populated tag when made from sparse working copy

   Externals Enhancements

   * File externals from foreign repository sources
   * Recursion into external working copies during commits
   * Tagging recursion into externals, tagging those as well
   * Stabilize peg revisions of external definitions when tagging
   * --ignore-externals flag should be sticky (and add --include-externals)
   * More robust single-file externals

   Obliterate

   * Remove path or path revision leaving auditing breadcrumbs
   * Archive older revisions (by date or size)

   Merging

   * More robust merging
   * --reintegration should tolerate sparse checkouts that aren't affected
   * Use common ancestor as part of the merge resolution process
   * First class citizenship for mergeinfo (revision- and path-level support)
   * Better handling of property merges (particularly svn:mergeinfo)
   * Support path-level merge traceability without adding heavy overhead
   * Make record-only merges support transitive merges
   * Support cyclic merging (multi-reintegrate support)
   * Support --changelist option on 'svn merge' (limit merge targets)
   * Avoid creating svn:mergeinfo when merging into a sparse working copy

   Tree Conflicts

   * Better user feedback -- what's the problem and how do they resolve it
   * Detect where a renamed target has been moved to
   * Track renames/moves better to support refactoring
   * Automatic resolution of tree conflicts with obvious resolution

   Miscellaneous

   * Offline commits
   * Timestamp versioning
   * Clearer error messages (not just HTTP details)
   * Earlier abort of commits where a lock is missing/stale
   * Warning when an update to past revision removes a file
   * Support for single file checkouts
   * Search mechanism (find files by name, property value, etc.)
   * Shared changelists
   * Optional text-bases
   * Support/emulate symbolic links on Windows
   * Better support of WebDAV mounts under Windows
   * Support directory locks (of the 'svn lock' variety)
   * Support at least one previous version of working copy formats
   * Add svn_load_dirs.pl functionality to 'svn import' operation
   * Show node origin information in 'svn info' output

Extra-Subversional Stuff

   * Keep "Version Control With Subversion" up-to-date
   * Better migration tools for VC systems other than CVS
   * Repository search mechanism
   * Documentation and tooling to help admins leverage Apache power features
   * Single source of info for what's new and hot in Subversion ecosystem
   * More powerful and featureful repository browser (show merges, etc.)
   * Better graphical 3-way-merge tools
