[ccan] CCAN status update

Adam Kennedy adamkennedybackup at gmail.com
Fri Mar 21 17:39:19 EST 2008


Rusty Russell wrote:
> On Thursday 20 March 2008 10:54:37 Adam Kennedy wrote:
>   
>> One of the biggest lessons from CPAN is that it is essential that you
>> maintain clear separation from the release environment and the author's
>> development environment.
>>
>> A release should be specific and intentional, and not simply be
>> "whatever is currently in version control".
>>
>> So I suggest we keep releases to just tarballs.
>>     
>
> So, we're talking about individual modules having releases, rather than 
> a "CCAN" release?  Even so, I'd prefer to keep a "release" tree/branch and 
> have people commit to that.
>   
Correct.

The single most common failure made by library developers in every 
language is that they treat their entire collection of modules as a 
single entity.

The result isn't a repository, it's a "toolkit" (for example, the 
gazillion similar but different JavaScript "toolkits".

This leads inevitably to bloat and stagnation.

The bioperl project, a giant bloated collection of "everything related 
to Perl and computational biology" has been stuck at 1.4 since 2003. The 
project got so big, they can't change it all at once.
> I pretty much assumed that most developers (ie ones that do more than throw in 
> code and walk away) will hold the whole repo.  But maybe that's just me.
>   
Unfortunately, that doesn't scale very far... the "entire" CPAN 
repository is around 1 gigabyte compressed.

So that would be something like a 10-20 gig checkout, uncompressed, with 
god only knows how many directories and files.
>   
>>>> Mostly, I hate it because I can't see a simple way to refactor the
>>>> layout of the repository easily by anyone other than you :)
>>>>         
>>> I'm happy to change to mercurial if you prefer that.  I don't know what
>>> the Windows support is like.  Any ideas?
>>>       
>> To be honest, I was thinking more along the lines of bog standard svn
>> for the core CCAN repository.
>>     
>
> Erk, I'd prefer to have something more sophisticated, but standard-tool 
> friendly.  At least mercurial has a 'download .tar.gz' button which takes 
> care of challenged platforms.  We should certainly have the same thing for 
> ccan.
>   
This somewhat depends on what exactly we're talking about as the 
"repository".

I am mostly referring to a version control repo that will hold the 
website content, the indexer and mirroring and etc code, and so on.

The master CCAN repository should be a simple FTP-mirrorable directory 
structure containing the release tarballs, with a database of some sort 
to hold all the metadata and master indexes.
>   
>> Where each individual author, or collection of authors, choose to store
>> their modules should not need to be important.
>>     
>
> It's a good point, but I'd like to do this without dropping back to svn on the 
> main server.
As I understand decentralized version control (bzr, mercurial, etc) 
there's no way I can commit to the project?

I have to send every single change to you by email as a patch file?

So lets assume we hit the first scaling threshold of 100 modules and 
20-50 developers, exactly how many patch files is that one central 
person going to need to manage a day?

Or am I seeing this wrong?

Adam K




More information about the ccan mailing list