Re: To late to rename /repository/web modules?

[email protected] (Gwynne Raskind) Sun, 19 Jul 2009 03:30:27 -0400
Newsgroups svn.migration
Message-ID <[email protected]>
On Jul 18, 2009, at 7:53 PM, Hannes Magnusson wrote:
> Hi Gwynne^Wall
>
> Is it to late to rename the modules under /repository/web ?
>
> The "php-" prefix feels redundant and in fact has become quite  
> annoying :)
>
> We currently have:
> doc/
> doc-editor/
> embed/
> pecl/
> pecl4win/
> php/
> php-bugs/
> php-gcov/
> php-hosts/
> php-master/
> php-news/
> php-people/
> php-testfest/
> php-wiki/
> php-windows/
> pres2/
> presentations/
> qa/
>
> I'd like to drop all the "php-" prefixes, and rename the "php" module
> to either "www" or "web".
>
> I severely doubt that many people have this checkedout out already(or
> ever will), so "client side" breakage is very small, so the question
> becomes: is it possibly without fuckingup svn?

A few "svn mv" commands would easily handle the renaming. Of course,  
this would re-break rsync, which Derick finally managed to get working  
(big round of applause to Derick, people, he put in a good bit of  
effort and patience on that front). I happen to agree that your naming  
scheme would be better (although just "www" for what's currently  
phpweb would be very ambiguous, since there're non-strictly-website  
modules in there), but I don't know if it's worth the hassle at the  
moment. I call for thoughts from the list on this.

> -Hannes
>
> p.s. what exactly do we call module these days?
> do we call all /repository/xxx modules?
> so /repository/php is a module, and /repository/php/php-src is what?
> Or is /repository/php/php-src the module, and /repository/php is just
> the "group"?
> /repository/phd is a module, /repository/php/php-src is a module,
> /repository/php/phpruntests/ is a module, and /repository/php/ is
> just.. "a group"..?


/repository/ -> "the repository"
SVNROOT plus anything with tags/, branches/, trunk/ in it ->  
"module" (common usage) OR "project" (SVN's official terminology)
Anything above a module -> "organizational structure", or simply  
"folder" :P

The top-level directories are pretty much aribtrary organizational  
conveniences. There's absolutely no intrinsic meaning to them.  
Ideally, they have conceptual meanings, i.e. "php/ contains everything  
directly related to core PHP development", "web/ contains all the PHP  
websites", "phpdoc/ contains everything related to core php  
documentation", etc. In practice, these are a bit blurry. web/  
contains peclweb (but not pearweb), docweb (but not gtk-web), and so  
forth. phpdoc/ contains doc-base and the language modules, but not  
docweb. You get the idea. The current setup is the best I could manage  
under the constraints of mostly no one telling me what made sense and  
people yelling at me to change things around at the 11th hour, 59th  
minute, and 50th second. It's fairly obvious that considerably more  
progress could be made in this vein. It's also deeply complicated by:

1) The fact that you can't move anything smaller than a module around  
(short of extremely complex scripting), so that (for example), the  
PECL extensions that were moved into php-src can't be effectively  
moved back out again while preserving the tagging and branching. This  
is partially a limitation of SVN, but more practically a limitation of  
conceptualization: If something that was part of an existing "project"  
before becomes its own "project" later, it's expected that you'll do  
some mv/cp work to set up the trunk of the new "project", let your  
VCS's copy-tracking point you to earlier history, and apply fresh tags  
and branches to the new "project" as needed rather than trying to ape  
the original "project"'s. The fact that SVN's branches-and-tags-are- 
directories thing complicates this a lot more than is otherwise  
necessary is peripheral.

In general, the tags-and-branches-are-directories thing fits very  
poorly into PHP's existing workflow. This is primarily and foremost  
because our workflow has for at least 13 years evolved around CVS's  
way of doing things; SVN represents a paradigm shift. Not as big a  
shift as Git would have been, but a shift nontheless.

Nonetheless, I'm the last person to argue that SVN needs to have done  
it more like CVS did.

2) The fact that people don't like dealing with changes which disrupt  
their workflow. Moving things around in a repo means forcing people to  
svn switch --relocate, or in some cases create entirely new checkouts.  
It also means making them update their scripts which make (reasonable  
and necessary) assumptions as to repository layout. The more, and the  
more often, you change things, the more upset people are going to be.  
At this point we *might* have enough lattitude to make one more major  
set of changes before people get too sick of scrambling to keep up to  
bother. In order to maintain even that much, the changes need to be  
carefully thought out and clearly beneficial.

3) The fact that several of these top-level abstractions could really  
stand to be independant repositories altogether. This was bandied  
about all the way back at the start of the migration, but ultimately  
rejected as adding an entire new layer of complexity to just about  
everything. Yet at the same time, it's clear that some things have  
grown too large to comfortably fit within the abstraction of our  
single repository. PHP-GTK is one of them. libgd is another (and  
Pierre is already looking into moving that out of our repo  
completely). It's questionable whether systems/ should *ever* have  
been part of a public repo, and it would have made a lot more sense  
for SVNROOT/ and systems/ to be part of an independant setup (though  
it would have complicated the layout of SVNROOT/ itself a bit).  
phpdoc/ is also large enough to be counted as its own entity at this  
point.

There are a lot of issues to consider and a lot of organizational  
problems that I don't feel we're all that likely to ever work out,  
based on past experience. People don't seem to really care if it works  
cleanly, so long as it "just works" (*cough Jani cough*). Ultimately,  
we'll come up against the blank wall of complexity problems. An SVN  
repository with 284345 revisions is just insanely huge. GCC converted  
their *twenty-year-old* CVS repo to SVN back in 2005 or so, and since  
then they've only made it to SVN revision 149787. It's questionable  
whether SVN scales to such a huge repo; certainly we've already seen  
some speed issues that even stateless HTTP can't explain away.

-- Gwynne