The Subversives

Wednesday, January 17, 2007

Still More Summit Photos

Me, too! Me, too!

I also had some photos from the Summit. Check 'em out at

Sunday, October 22, 2006

Some more Pictures

So, I didn't take nearly as many pictures during the Summit as I'd planned, and the ones I took didn't come out nearly as well as I'd have liked (isn't that always the case?), but in any event, I polished up the ones that did come out well, and they're up on flickr now.

Wednesday, October 18, 2006

Day 3 Brainstorming

Day 3 is all about blue-sky brainstorming... how we might design Subversion 2.0, completely free of compatibility guarantees. What can we learn from our mistakes? What would we do differently the second time around?

Here are some brainstorm notes, and after lunch we'll be discussing things in parallel breakout sessions.
  • 'svn merge' vs. 'svn diff-and-apply'
  • server broadcasts behaviors to clients
  • libsvn_wc: could it be simpler?
  • sqlite dependency on client and/or server?
  • do working copies really need to be detachable/movable?
  • we should completely hide APR. and use APR 1.2.
  • break client and server into separate products with own schedules
  • define a single OO interface for other languages to use
  • stop requiring whole URLs to identify branches and tags!
  • possible filesystem changes
    • revlog storage format for repos
    • add indexing/searching to repository
    • be truly timesafe (svn is close, but revprops aren't timesafe)
    • OBLITERATE designed from the beginning.
    • true renames in both repository and client
    • support for concurrent writes to the same fs transaction
    • distinct concepts of 'branch' vs. 'copy' vs 'tag'?
    • ACLs built into filesystem; ACLS are not timesafe data.
    • native 'symlink' nodes, not just files and dirs... could be used to track branches and tags, would replace svn:externals
    • file format determines how it's stored (??)
    • typed properties (binary, text, utf8, etc.)
    • signed changesets?
  • something to replace svn:externals -- incomplete checkouts, viewspecs, etc.
  • better testing framework
  • better build system
  • Rewrite in another language?
    • C++ Pros:
      • real objects: no more function pointers and batons
      • still swig-bindable
      • virtual functions instead of vtables
      • function overloading instead of revving function names
      • totally safe, assuming we have tight style guide and we’re disciplined (which we are!)
    • C++ Cons:
      • ABI problems. (Justin? DannyB?)
  • Decentralized Design? To what degree? How many of those 'advantages' do we get?
    • Karl sez: incremental path to decentralized clients
    • Justin wants a smaller working copy. Flexibility: no text-base,or yes text-base. Fears having whole repository locally.
    • Idea of a hybrid model: can be centralized or distributed. Client can choose (a) tiny wc with no text-base, (b) larger wc with text-base, (c) big wc with even more history available.
    • DannyB says that this shiftable wc model would probably end up sharing implementation with the repository
  • Possible breakout sessions
    • possible design of a hybrid centralized/decentralized model
    • project component reorganization: server / client / library API
    • redesign of our testing system
    • filesystem redesign (see above for myriad of ideas)
    • how to make our bindings not suck
    • build system rewrite (scons?)
    • merge-tracking: where to go from here
    • gstein, dlr: we should rewrite svn* commandline tools in python

Summary of Day 2

Here's a quick outline of what transpired during day 2 of the summit. (Detailed notes are available in the Mercurial repository.)
  • Justin Erenkrantz presented on the horrible state of win32 build instructions, and started a discussion on how we could improve things. Should we target VC6, VCExpress, MinGW? All three? He'd like to see a and a that uncompress into the same directory, and then some sort of python script that finds the compiler, finds all the deps, and "just builds". David Anderson suggested that such a proposal might be reinventing scons ( and that if we switched to scons, it would be trivial to use scons on unix as well, as a complete replacement for our system. Everyone volunteered David Anderson to investigate scons further.
  • Did some more code review for 1.4.1
  • We had a keysigning party: everyone read keys to each other and presented photo IDs. Now we'll able to sign each other's keys at leisure and create an extremely-well-connected web of trust.
  • We had a long discussion about our new non-profit organization, and exactly how it should enforce/prevent abuse of the 'Subversion' name. It's very hard to define what constitutes as abuse or confusion!
  • Lieven Govaerts presented on his 'buildbat' project.... nightly builds, multipflatform testing, continuous integration, etc.
  • Presentation by Justin on serf... discussion on what it would take to make serf the new default, instead of neon. Serf is very fast!
The day ended with a nice dinner together, followed by group bowling! Photos forthcoming.

Day 2 ends

Dinner at the Tied House

The menu ... and a new name for Subverison 2.0!

Programming excercises (lower score = better programmer)

Tuesday, October 17, 2006

Code reviews and expensive equipement

One possible use of having a large meeting room, two projectors and 30 Subvrsion developers: quick code reviews of features up for backporting.

Day 2 begins

Breakfast of Champions

Monday, October 16, 2006

More photos

I am tagging my photos on flickr with svnsummit.

The Plan is taking shape

First day talks

People are taking much more detailed notes than I, but here's a quick summary of the various presentations and discussions on our first day of the Subversion developer summit.
  • I gave an opening plea: we've lost our focus since releasing 1.0, let's regain focus by creating new mission statement and a tight feature list for Subversion 2.0.
  • Blair Zajac talked about how his company (Sony -- versioning assets for movies) uses an interesting layout structure.
  • clkao and David Glasser gave a presentation on svk, and showed off a bunch of features that they wish "subversion would steal". :-)
  • Karl Fogel talked about the design of his incomplete-checkout feature. He's implemented depth {0, 1, infinity} now 'sticky' per dir. Discussion got complex, since the feature touches on other things like viewspecs.
  • Long discussion about 'svn obliterate' design -- what use cases do our users have? How to define obliteration? There was an interesting idea from dglasser about preserving data, but losing history... Also a very messy discussion, no real resolution.
  • Presentation from dannyb and dlr on the state of merge-tracking branch. We've now achieved (in C code) approximately equal functionality with the the script. There are still some huge use-cases unfinished which involve server-side computation. Not sure if/when we want to go there.
  • Presentation from dannyb on how Mercurial works, and especially on Mercurial's revlog storage format... and why we should use it in next-gen Subversion. It would get us most of the way to a distributed design too, if we wanted.
  • Group brainstorm: why aren't we achieving world domination? Listed as many svn weaknesses as we could, common user complaints, etc.
  • Karl led us in a discussion which evaluated different designs to implement log message templates.

Decentralized version control?

As part of our discussions, we're chatting about the possibility of the 'next gen' Subversion being a decentralized system. So, in a radical act of open-mindedness, we're actually playing around with Mercurial to get a taste of such a system. As people take notes, we're storing them in a Mercurial repository, and pushing/pulling changesets around. Info on the repository is available at this url.

Fidel^H^H^H^H^HBen exhorts the crowd

Our elder statesman in a pensive mood

... and expostulating on the depths of infinity:

The Central Commitee of the the Subversion Party is in session

Members are closely following the speeches:

The summit begins

Here's a photo from my lousy camera phone, of Karl Fogel explaining the design of his incomplete-checkout feature.

Sunday, October 15, 2006

Day 0 Events

I say 'day 0' because the summit doesn't actually begin until tomorrow (Monday).

A bunch of us in town already met up at the Googleplex this afternoon, just to hang out and relax. We found an empty conference room with 2 projectors, whiteboard, and sofa. After some socialization, we decided it would be cool to try and get Subversion 1.4.1 finished ASAP, so that it makes it into Debian Etch (whose deadline is the week.) So we hooked up two of our notebook computers to the projectors, and spend a couple of hours doing group code reviews of the 1.4.1 STATUS file, examining diffs, and dropping votes into the file. We didn't quite finish, but it was still quite a bit of fun.

Tonight, 13 (of 30) of us congregated at Yuet Lee, kfogel's favorite Chinese restaurant in downtown San Francisco. Afterwards we retired to kfogel's apartment, where we spent an hour or two debating the merits of distributed version control systems. I'm sure we'll have to repeat the debate tomorrow, when the summit really begins and the other 17 people show up!

First Post

This blog has been established as a 'shared' blog, so that the community of Subversion developers can post various news, discussion results, opinions, and so on.