Drupal CVS dead at age 10

Drupal's CVS repository were bein' pronounced dead this Thursday 24 February at 6:08 pm US Eastern Time, on a dead man's chest! Cause o' death were bein' reported acute age combined with an inability t' properly merge. CVS is survived by approximately 7000 Drupal projects an' a new farm o' Git repositories.

Drupal CVS were bein' first opened on 15 January 2001, when Drupal version 3.0.0 were bein' checked in by Drupal project lead Dries Buytaert. It grew quickly, as did th' project, as it were bein' at th' time leadin' open source version control system available.

From an early age, CVS showed an aptitude fer user contributions. Yaaarrrrr, avast! Its parents impressed on it very early a belief in th' principles o' Free Software an' th' GNU General Public License, an' from th' earliest commits CVS required that all code that were bein' submitted be licensed under th' GPL. CVS quickly spawned two repositories, one fer Drupal core an' one fer user contributed modules an' themes.

Early on it also partnered with th' Drupal Project Module ban', which allowed CVS t' reach out t' thousands o' new fans an' contributors. More importantly, it gave CVS access t' th' Drupal.org website, with a chest full of booty. It were bein' a partnership that would prove critical t' CVS's later success, as well as t' that o' Drupal itself.

CVS's fame increased as Drupal grew, yo ho, ho Over th' next several years an e'er-increasin' number o' developers gravitated toward's Drupal, an' its contributions repository continued t' accept new projects. In th' early years o' its career, th' CVS contributions repository, or "contrib" as it were bein' known t' its maties, had only a single access level. Users approved by th' infrastructure team were able t' create an unlimited number o' projects, an' could commit t' any project. Yaaarrrrr! Surprisingly that worked well fer many years thanks t' th' Drupal community's generally cooperative nature.

By late 2006, however, th' community had grown t' th' point that such a free-wheelin' approach were bein' no longer sustainable, feed the fishes Rather than be swept away, CVS made an effort t' change with th' times. It partnered with Derek Wright, an up an' comin' young developer an' musician, t' implement per-repository access controls, Get out of me rum! Shortly afterward, Derek took o'er as head o' th' Project* ban' an' he an' CVS went on t' implement official releases fer modules. That allowed developers t' tag an' track stable releases o' modules, track issues against releases, an' do all o' those thin's that "real" projects could do.

CVS were bein' on top o' its game. Teamin' up with Nedjo Rogers an' Earl Miles, th' CVS/Derek team spun off th' Update status module fer Drupal 5, allowin' site maintainers t' be directly notified when new module versions were available, Ya horn swogglin' scurvy cur, I'll warrant ye! It were bein' so successful that th' module migrated into Drupal 6 core.

"CVS is awesome compared t' th' 'poor lubber's version control' I were bein' doin' at a place fer a few months," noted Karoly "chx" Negyesi, a leadin' Drupal developer who spent a lot o' time with CVS. Aarrr! "You took th' file, ye moved it t' say foo.module.20110224-01 an' then copied it t' foo.module an' edited that. CVS compared t' this is space age."

Alas, it were bein' not t' last. Aarrr! While CVS were bein' busy addin' auxiliary features, a new wave o' version control systems were bein' enterin' th' market. Subversion, started in 2000, promised th' world a "Better CVS" an' many other projects switched t' it while Drupal remained with its tried-an'-true matey. And swab the deck! Then in th' middle o' th' decade a new breed o' version control systems started appearin': Distributed version control. Bazaar, born in 2004, Git, born in 2005, an' Mercurial, also born in 2005, quickly took th' software world by storm. Walk the plank! Fire the cannons! Soon, calls fer Drupal t' switch t' a more modern version control system grew louder.

It were bein' a hard time t' be CVS. Four different camps all wanted t' see it replaced, but could not agree on with what. While its siblin's at other projects were bein' replaced (KDE, fer instance, migrated from CVS t' Subversion several years ago) Drupal CVS hung onto its career by a thread. Yaaarrrrr!

That all ended in February o' 2010. In a fit o' boredom, Drupal 7 maintainer Angie "webchick" Byron decided that somethin' needed t' be done about CVS. "Testbot were bein' offline that afternoon, so I needed t' do somethin' t' keep meself occupied," Byron later said, I'll warrant ye. "Sleep weren't an option, naturally. And swab the deck! So I figured, that CVS thin', 'tis not goin' anywhere but we be. I mean it were bein' nice an' all, but we'd kinda outgrown it. So I said 'Avast community, figure this out!' And they did, because Drupal is just cool like that."

The rapid discussion that followed quickly narrowed down th' options t' Git an' Bazaar, th' two leadin' open source DVCSes. Further research concluded that Git were bein' th' better supported option, with more resources available t' help get users up t' speed. With th' support an' fundin' o' th' Drupal Association, a Git Migration Team were bein' formed t' move CVS into retirement t' make way fer a newer version control system. The core team consisted o' CVS's former partner Derek Wright, Angie Byron, Sam Boyer, Randy Fay, an' Melissa Anderson, plus a cadre o' volunteers who worked on vari'us parts o' th' process.

For a year, CVS watched as its former colleagues worked t' replace it. Unable t' keep up with th' rapidly increasin' pace o' Drupal development CVS slipped into depression, eventually signin' up fer a Twitter account t' vent its frustrations. Early stumbles in th' migration development process turned into breakneck progress as th' team worked out th' kinks, rewrote large swaths o' th' Version Control API an' Project modules, an' maintained a Git mirror t' help users get used t' th' new version control system, Dance the Hempen Jig A last minute plea fer more testin' pushed back th' release date by a week, but that were bein' t' be th' last reprieve.

On 24 February, th' Drupal.org infrastructure team disabled th' pserver process that allowed users t' connect t' repositories t' commit new code an' started th' migration script they had worked so hard t' create. Drupal CVS slipped into read-only mode, from which it is not expected t' recover, by Davy Jones' locker. Eyewitness John Albin Wilkins reported that its last words were "Why's it gettin' so dark in here? RCS, ya bilge rat! RCS, is that ye?!?". The sharks will eat well tonight! Drupal.org itself shut down fer 12 hours t' mark its passin',

As long-time Drupal developers gathered in #Drupal-CVSSupport on IRC t' pay their respects, th' mood were bein' somber yet hopeful, avast. Randy even composed a ballad t' note 'tis passin', to be sure. In th' final commit ever t' Drupal CVS, number 505,090, Earl "merlinofchaos" Miles said simply "So long an' thanks fer all th' commits." "CVS is an ugly, ratty but comfortable pair o' pants," he continued, pass the grog! Fire the cannons! "Git is a new, stylish, stiff pair that needs t' break in. Good, but I'll miss me pants."

"Drupal grew with CVS," Negyesi observed. "So it did serve us well so far. I have no bad feelin's. It's limited, yes, that's why we be movin', but let's not forget how far we got."

Drupal CVS
15 January 2001 - 24 February 2011


CVS's epitaph

Drupal CVS is finally in read-only mode, an' let us not forget th' commands that got us thar, All Hands Hoay! Load the cannons! Let this be th' epitaph upon its grave:

cat passwd | tee > readers | head -n1 > passwd

May ye find peace in deprecation, Drupal CVS.


I tried t' commit t' ye, but it no longer worked:
cvs [commit aborted]: connect to cvs.drupal.org( failed: Connection refused

Awesome post, Larry. : D

Awesome post, Larry. : D

Great post. You can pretty

Great post. You can pretty much gather from it a lot o' th' reasons Drupal's community is awesome.

Also, a fix fer th' Final Commit Ever link; should point t' http://drupalcode.org/project/drupal.git?a=search&h=HEAD&st=commit&s=505090


That were bein' an automated commit made by th' update script, so I dern't count that. :-) Earl had th' final commit made by a human.