[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Developing Java Client?

From: Ben Collins-Sussman <sussman_at_collab.net>
Date: 2003-10-22 01:34:04 CEST

"Robert Simmons" <derisor@arcor.de> writes:

> Yes but where is the design and architecture documentation? ;-) Im
> not terribly confidently expecting it to exist but it would be
> convenient. Reading code to figure out architecture is very slow and
> tedious and most people simply wont bother. If it comes down to
> having no hints other than the code base, I may not bother. I want
> to write a library, not learn to write C all over again.

Read the entire Subversion book, especially chapter 7. That explains
a lot of architecture. There's also a very old, very general design
document sitting here, which gives a good overview:

http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=259

By the way, there is no "one protocol" for Subversion. The access to
the repository is an abstract API, so anyone is free to write a custom
protocol. At the moment, we have a stateful custom protocol which
talks to an 'svnserve' server, and a WebDAV/DeltaV variant protocol
that speaks to an Apache server. And and there's a 'no-network'
protocol for accessing a repository directly. Which will you
reimplement in pure Java? All of them?

And then take a gander over at libsvn_wc design notes:

  http://svn.collab.net/repos/svn/trunk/subversion/libsvn_wc/README

You wouldn't believe how difficult it is to manage a working copy that
versions directories, and allows mixed-revisions. The number of bugs
and edge-cases is staggering. People complain about what a 'mess'
libsvn_wc is, and how it needs to be rewritten from scratch, but
nobody has the guts to do it. The job the library is doing is
incredibly complex, and nobody is 100% yet that a new library could be
doing the same job significantly better.

But really, you need to read the whole book and actually *use* the
software to get a good grip on how difficult a problem this is.
Writing a version control system is not something that's trivially
tackled by a committee with "Good Object Oriented Principles". It's a
Really Hard Problem. Ask the huge community here that's been working
on it for three years. Ask Tom Lord & friends over on the arch
project. Ask how many years Larry McVoy has spent on Bitkeeper.

It it possible to write a client in pure java? Sure, absolutely. But
only by someone who knows both the original problem and Subversion
incredibly intimately. There's no magic blueprint we can hand you.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Wed Oct 22 01:36:46 2003

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.