ProducingOpenSourceSoftware
ByKarlFogel
...............................................
Publisher:O'Reilly
PubDate:October2005
ISBN:0-596-00759-0
Pages:302
TableofContents|Index
Thecorporatemarketisnowembracingfree,"opensource"softwarelikenever
before,asevidencedbytherecentsuccessofthetechnologiesunderlyingLAMP
(Linux,Apache,MySQL,andPHP).Eachistheresultofapubliclycollaborative
processamongnumerousdeveloperswhovolunteertheirtimeandenergytocreate
bettersoftware.
Thetruthis,however,thattheoverwhelmingmajorityoffreesoftwareprojectsfail.
Tohelpyoubeattheodds,O'ReillyhasputtogetherProducingOpenSource
Software,aguidethatrecommendstriedandtruestepstohelpfreesoftware
developersworktogethertowardacommongoal.Notjustfordeveloperswhoare
consideringstartingtheirownfreesoftwareproject,thisbookwillalsohelpthose
whowanttoparticipateintheprocessatanylevel.
Thebooktacklesthisverycomplextopicbydistillingitdownintoeasily
understandableparts.Startingwiththebasicsofprojectmanagement,itdetails
specifictoolsusedinfreesoftwareprojects,includingversioncontrol,IRC,bug
tracking,andWikis.AuthorKarlFogel,knownforhisworkonCVSandSubversion,
offerspracticaladviceonhowtosetupandusearangeoftoolsincombinationwith
openmailinglistsandarchives.Healsoprovidesseveralchaptersontheessentialsof
recruitingandmotivatingdevelopers,aswellashowtogainmuch-neededpublicity
foryourproject.
Whilemanagingateamofenthusiasticdevelopers--mostofwhomyou'venever
evenmet--canbechallenging,itcanalsobefun.ProducingOpenSourceSoftware
takesthisintoaccount,too,asitspeaksofthesheerpleasuretobehadfromworking
withamotivatedteamoffreesoftwaredevelopers.
ProducingOpenSourceSoftware
ByKarlFogel
...............................................
Publisher:O'Reilly
PubDate:October2005
ISBN:0-596-00759-0
Pages:302
TableofContents|Index
Dedication
Copyright
Foreword
Preface
WhyWriteThisBook?
WhoShouldReadThisBook?
HowtoUseThisBook
Sources
Conventions
CommentsandQuestions
SafariEnabled
Acknowledgments
Disclaimer
Chapter1.Introduction
Section1.1.History
Section1.2.TheSituationToday
Chapter2.GettingStarted
Section2.1.First,LookAround
Section2.2.StartingfromWhatYouHave
Section2.3.ChoosingaLicenseandApplyingIt
Section2.4.SettingtheTone
Section2.5.Announcing
Chapter3.TechnicalInfrastructure
Section3.1.WhataProjectNeeds
Section3.2.MailingLists
Section3.3.VersionControl
Section3.4.BugTracker
Section3.5.IRC/Real-TimeChatSystems
Section3.6.Wikis
Section3.7.WebSite
Chapter4.SocialandPoliticalInfrastructure
Section4.1.Forkability
Section4.2.BenevolentDictators
Section4.3.Consensus-BasedDemocracy
Section4.4.WritingItAllDown
Chapter5.Money
Section5.1.TypesofInvolvement
Section5.2.HirefortheLongTerm
Section5.3.AppearasMany,NotasOne
Section5.4.BeOpenAboutYourMotivations
Section5.5.MoneyCan'tBuyYouLove
Section5.6.Contracting
Section5.7.FundingNon-ProgrammingActivities
Section5.8.Marketing
Chapter6.Communications
Section6.1.YouAreWhatYouWrite
Section6.2.AvoidingCommonPitfalls
Section6.3.DifficultPeople
Section6.4.HandlingGrowth
Section6.5.NoConversationsintheBugTracker
Section6.6.Publicity
Chapter7.Packaging,Releasing,andDailyDevelopment
Section7.1.ReleaseNumbering
Section7.2.ReleaseBranches
Section7.3.StabilizingaRelease
Section7.4.Packaging
Section7.5.TestingandReleasing
Section7.6.MaintainingMultipleReleaseLines
Section7.7.ReleasesandDailyDevelopment
Chapter8.ManagingVolunteers
Section8.1.GettingtheMostOutofVolunteers
Section8.2.ShareManagementTasksasWellasTechnicalTasks
Section8.3.Transitions
Section8.4.Committers
Section8.5.Credit
Section8.6.Forks
Chapter9.Licenses,Copyrights,andPatents
Section9.1.Terminology
Section9.2.AspectsofLicenses
Section9.3.TheGPLandLicenseCompatibility
Section9.4.ChoosingaLicense
Section9.5.CopyrightAssignmentandOwnership
Section9.6.DualLicensingSchemes
Section9.7.Patents
Section9.8.FurtherResources
AppendixA.FreeVersionControlSystems
SectionA.1.Subversion
SectionA.2.SVK
SectionA.3.Arch
SectionA.4.monotone
SectionA.5.Codeville
SectionA.6.Vesta
SectionA.7.Darcs
SectionA.8.Aegis
SectionA.9.CVSNT
SectionA.10.Meta-CVS
SectionA.11.OpenCM
SectionA.12.Stellation
SectionA.13.PRCS
SectionA.14.Bazaar
SectionA.15.Bazaar-NG
SectionA.16.ArX
SectionA.17.SourceJammer
SectionA.18.FastCST
SectionA.19.GIT
SectionA.20.Superversion
AppendixB.FreeBugTrackers
SectionB.1.Bugzilla
SectionB.2.GNATS
SectionB.3.RT
SectionB.4.Trac
SectionB.5.Roundup
SectionB.6.Mantis
SectionB.7.Scarab
SectionB.8.DBTS
SectionB.9.Trouble-TicketTrackers
SectionB.10.BTT
AppendixC.WhyShouldICareWhatColortheBikeshedIs?
AppendixD.ExampleInstructionsforReportingBugs
Colophon
Index
Dedication
Thisbookisdedicatedtotwodearfriendswithoutwhomitwouldnothave
beenpossible:KarenUnderhillandJimBlandy
Copyright©2006KarlFogel.Somerightsreserved.
PrintedintheUnitedStatesofAmerica.
PublishedbyO'ReillyMedia,Inc.,1005GravensteinHighwayNorth,
Sebastopol,CA95472.
O'Reillybooksmaybepurchasedforeducational,business,orsalespromotional
use.Onlineeditionsarealsoavailableformosttitles().
Formoreinformation,contactourcorporate/institutionalsalesdepartment:(800)
998-9938or
NutshellHandbook,theNutshellHandbooklogo,andtheO'Reillylogoare
registeredtrademarksofO'ReillyMedia,Inc.ProducingOpenSourceSoftware
andrelatedtradedressaretrademarksofO'ReillyMedia,Inc.
Manyofthedesignationsusedbymanufacturersandsellerstodistinguishtheir
productsareclaimedastrademarks.Wherethosedesignationsappearinthis
book,andO'ReillyMedia,Inc.wasawareofatrademarkclaim,thedesignations
havebeenprintedincapsorinitialcaps.
Whileeveryprecautionhasbeentakeninthepreparationofthisbook,the
publisherandauthorsassumenoresponsibilityforerrorsoromissions,orfor
damagesresultingfromtheuseoftheinformationcontainedherein.
ThisworkislicensedundertheCreativeCommonsAttribution-ShareAlike
License.Toviewacopyofthislicense,visit
orsendalettertoCreative
Commons,543HowardStreet,5thFloor,SanFrancisco,California,94105,
USA.
Foreword
Themostwell-knownorganizationalmodelsofgettingthingsdonewhetherit's
buildingahouse,producingamotionpicture,orwritingsoftwaretendtoconcern
thepredictionofandcommitmenttospecificoutcomes,mitigatingrisktothe
plan,andcorrectingsurprisesalongtheway.Insuchmodels,innovationisseen
tohappenatthemomentofinspirationoftheideaandtheremaining99%ofthe
effortisperspiration,toparaphraseEdison.Sayitalongwithme:"Yeah,right."
Thisviewlooksatinnovationasaverysolitarysport;wewanttotalkabout
SteveJobsastheguybehindtheiPod,ratherthanthemixofgoodengineersand
productmarketingtypeswhocollaboratedwithStevetofindtherightsweet-spot
combinationoffeaturesandfashion.
WealsowanttotalkaboutLinusTorvaldsastheguyresponsibleforLinux,but
that'sevenlessclosetothetruththantheJobs/iPodexample.Linus'brillianceis
notincreatinganunprecedentedtechnologyinnovation,norinplottingthe
perfectroadmapfortheLinuxkernel,norinhavingafull-timestaffofhisown
toassignworkto.ThebrillianceinsideLinusishisabilitytoorchestratethe
aggregatedinterestsofthousandsofotherdevelopers,allindividuallyscratching
theirownitch(orthatoftheiremployer),andtherebymakingaproduct
renownedforreliability,performance,andthefeaturespeopleneed.Linus'role
islikethatofanairtrafficcontrollerwatchingtheskiesfillwithideas,prototypes
basedonthoseideas,andseriousproduction-qualitycodeimplementingthebest
ofthoseideasthendecidingwhenthatworkismatureenoughtolandatthe
airportknownasLinus'officialkernelsourcecoderepository.
It'sbeensaidthathumilityisthemostunderratedforceintheworldtoday.
Successfulopensourceleadersdemonstratethisoverandoverbydrivingfor
consensusonmajorideas,makingitcleartheirownideasareopentochallenge,
andbeingastransparentaspossible.Buildingasenseofempowermentamongst
thedevelopersismoreimportantthanmeetingshipdateswithspecificfeatures,
andmoreimportantthancreatingzero-defectsoftware.TheApacheSoftware
Foundation,forexample,believesthatitsfirstorderofbusinessiscreating
healthysoftwaredevelopercommunitiesfocusedonsolvingcommonproblems;
goodsoftwareisasimplyanemergentresult.
Infactitcouldn'thappenanyotherway,andhere'swhy.TheOpenSource
Definitionisalistoftermsthatarerequirementsofanylicenseclaimingtobean
opensourcelicense,andanyprojectclaimingtobeanopensourceprojectmust
havesuchalicense.OneofthekeythemesoftheOSDis"therighttofork":the
righttocreateaderivativeworkandredistributeittootherpeopleunderthe
termsofthesamelicense,withouttheapprovaloftheoriginaldevelopers.This
doesn'thappenoften;mostofthetime,whensomeonefixesabugoraddsa
minorfeature,theyusuallyofferitbacktotheoriginaldevelopers,andifthe
projectiswellrun,thatendsupinasubsequentrelease.Butwhenitneedsto
happenwhentheoriginaldevelopershavemovedontootherthings,orworse,
becomedifficulttoworkwiththerighttoforkactsasanessentialdevicetocarry
aprojectforward.
Amongmanyotherbenefits,thisrulemeansthatleadershipinanopensource
communitycomesnotfromleverageorcontrol,butfromfindingcommon
interestsandexpertlymanagingwhatisvolunteered.Opensourceprojectsdon't
competefor"marketshare"fordollarsfromtheuserbasebecausetherearen'tany.
Instead,theycompetefordevelopermindshareandheartshare,andthat'snot
goingtoflowtoaleaderwho'sobstinate,unresponsivetotheusercommunity,or
technicallyunsophisticated.
Thosewhoseeopensourceasabunchofzero-pricesoftwarecreatedby
impossiblyaltruisticamateursdon'tgetthisatall.Therestoftheworld,though,
isstartingtoclueintotheideathatthesoftwareindustrydoesn'thavetobea
zero-sumgame,andthatlettinggoofalittlecontrolandownershipmight
actuallyresultinsomethinggranderinreturn.Thisnotionislargerthanjust
software.ProfessorEricvonHippelatMIThaschartedahistoryofinteresting
experimentsandpatternsinthedomainof"user-ledinnovation"companieswho
haveexperimentedwithinvolvingtheircustomersinthedesignoffollow-up
products;ordeliveringtoolkitsratherthanfinishedworks,allowingcustomersto
createnewusesorsolvemorecomplicatedproblems.TheWikipediaisahuge
exampleofparticipatorycreationthatsoundslikeitshouldbeanunmanageable
chaos,butinsteadhasdevelopedareputationforbeingmorecomplete,up-todate,andbalancedthananyseriesyoucouldbuyandputonyourbookshelf.
Thesesuccessesdon'tjusthappenbymagicallypressingthe"BeMoreOpen"
buttononthekeyboard.Thereisauniverseofbestpracticeandlorethatbefore
nowhasbeenlargelyanoraltradition,pickedupbysittingonagoodproject
mailinglistforyearsandlearningthepatternsofcommunicationandprocess.
Karlhasdonethesoftwaredevelopmentworldatremendousfavorbyfinally
capturingmuchofthatinthisbook.Whilethesoftwareengineeringworldis
muchmorecomfortablewiththeconceptsofopensource,softwaredeveloper
communities,andunpredictableoutcomesthantheywerebefore,therearestill
notenoughleaderswithKarl'sgraspofthenuancesthatmakeallthedifference.
Withthisbook,thatcanchange.
BrianBehlendorfApacheSoftwareFoundationandCollabNet
Preface
WhyWriteThisBook?
WhoShouldReadThisBook?
HowtoUseThisBook
Sources
Conventions
CommentsandQuestions
SafariEnabled
Acknowledgments
Disclaimer
WhyWriteThisBook?
Atparties,peoplenolongergivemeablankstarewhenItellthemIwritefree
software."Oh,yes,opensourcelikeLinux?"theysay.Inodeagerlyin
agreement."Yes,exactly!That'swhatIdo."It'snicenottobecompletelyonthe
fringeanymore.Inthepast,thenextquestionwasusuallyfairlypredictable:
"Howdoyoumakemoneydoingthat?"Toanswer,I'dsummarizetheeconomics
ofopensource:thatthereareorganizationsinwhoseinterestitistohavecertain
softwareexist,butthattheydon'tneedtosellcopies,theyjustwanttomakesure
thesoftwareisavailableandmaintained,asatoolinsteadofacommodity.
Lately,however,thenextquestionhasnotalwaysbeenaboutmoney.The
businesscaseforopensourcesoftware[1]isnolongersomysterious,andmany
non-programmersalreadyunderstandoratleastarenotsurprisedthatthereare
peopleemployedatitfulltime.Instead,thequestionIhavebeenhearingmore
andmoreoftenis"Oh,howdoesthatwork?"
[1]Theterms"opensource"and"free"areessentiallysynonymousinthiscontext;theyare
discussedmoreinthesectionSection1.1.2inChapter1.
Ididn'thaveasatisfactoryanswerready,andtheharderItriedtocomeupwith
one,themoreIrealizedhowcomplexatopicitreallyis.Runningafreesoftware
projectisnotexactlylikerunningabusiness(imaginehavingtoconstantly
negotiatethenatureofyourproductwithagroupofvolunteers,mostofwhom
you'venevermet!).Nor,forvariousreasons,isitexactlylikerunninga
traditionalnon-profitorganization,noragovernment.Ithassimilaritiestoall
thesethings,butIhaveslowlycometotheconclusionthatfreesoftwareissui
generis.Therearemanythingswithwhichitcanbeusefullycompared,butnone
withwhichitcanbeequated.Indeed,eventheassumptionthatfreesoftware
projectscanbe"run"isastretch.Afreesoftwareprojectcanbestarted,andit
canbeinfluencedbyinterestedparties,oftenquitestrongly.Butitsassetscannot
bemadethepropertyofanysingleowner,andaslongastherearepeople
somewhereanywhereinterestedincontinuingit,itcannotbeunilaterallyshut
down.Everyonehasinfinitepower;everyonehasnopower.Itmakesforan
interestingdynamic.
ThatiswhyIwantedtowritethisbook.Freesoftwareprojectshaveevolveda
distinctculture,anethosinwhichthelibertytomakethesoftwaredoanything
onewantsisacentraltenet,andyettheresultofthislibertyisnotascatteringof
individualseachgoingtheirownseparatewaywiththecode,butenthusiastic
collaboration.Indeed,competenceatcooperationitselfisoneofthemosthighly
valuedskillsinfreesoftware.Tomanagetheseprojectsistoengageinakindof
hypertrophiedcooperation,whereone'sabilitynotonlytoworkwithothersbut
tocomeupwithnewwaysofworkingtogethercanresultintangiblebenefitsto
thesoftware.Thisbookattemptstodescribethetechniquesbywhichthismaybe
done.Itisbynomeanscomplete,butitisatleastabeginning.
Goodfreesoftwareisaworthygoalinitself,andIhopethatreaderswhocome
lookingforwaystoachieveitwillbesatisfiedwithwhattheyfindhere.But
beyondthatIalsohopetoconveysomethingofthesheerpleasuretobehad
fromworkingwithamotivatedteamofopensourcedevelopers,andfrom
interactingwithusersinthewonderfullydirectwaythatopensourceencourages.
Participatinginasuccessfulfreesoftwareprojectisfun,andultimatelythat's
whatkeepsthewholesystemgoing.
WhoShouldReadThisBook?
Thisbookismeantforsoftwaredevelopersandmanagerswhoareconsidering
startinganopensourceproject,orwhohavestartedoneandarewonderingwhat
todonow.Itshouldalsobehelpfulforpeoplewhojustwanttoparticipateinan
opensourceprojectbuthaveneverdonesobefore.
Thereaderneednotbeaprogrammer,butshouldknowbasicsoftware
engineeringconceptssuchassourcecode,compilers,andpatches.
Priorexperiencewithopensourcesoftware,aseitherauseroradeveloper,isnot
necessary.Thosewhohaveworkedinfreesoftwareprojectsbeforewillprobably
findatleastsomepartsofthebookabitobvious,andmaywanttoskipthose
sections.Becausethere'ssuchapotentiallywiderangeofaudienceexperience,
I'vemadeanefforttolabelsectionsclearly,andtosaywhensomethingcanbe
skippedbythosealreadyfamiliarwiththematerial.
HowtoUseThisBook
Thisbookconsistsofninechaptersandfourappendixes:
Chapter1
Abriefhistoryoffreesoftware,andanoverviewoftheopensourceworld
today.
Chapter2
Howtogetanopensourceprojectoffontherightfoot,includinggathering
developers,choosingalicense,andannouncingtheproject.
Chapter3
Anin-depthlookatthetoolsaprojectneedstofunctionsmoothly,
includingcommunications,versioncontrol,andbugtrackingsoftware.
Chapter4
Howtosetupformalandinformalpoliticalstructurestoenableproject
memberstoworktogetherandachieveconsensusonimportantissues.
Chapter5
Whyandhowtohaveacommercialrelationshipwithanopensource
project.
Chapter6
Aguidetoproductiveconductinprojectforums,coveringboththesocial
andtechnicalaspectsofcommunications.
Chapter7
Howtomanageregularreleasesofopensourcesoftware,without
disruptingthedevelopmentcyclesofthevolunteerparticipants.
Chapter8
Understandingwhyvolunteerdevelopersdowhattheydo,andtreating
theminsuchawaythattheykeepdoingit.
Chapter9
Howtoevaluateandchoosefreesoftwarelicenses,includinganin-depth
examinationoflicensecompatibilityissues.
AppendixA
Alistofopensourceversioncontrolsystems,forprojectsjuststartingout.
AppendixB
Likewise,alistofopensourcebugtrackers.
AppendixC
Anoft-citedscreedbyPoul-HenningKampaboutthedangersofgroup
decision-makingandopensourcediscussionlists.
AppendixD
Anexamplethatshowshowanopensourceprojectcanusebugreporting
instructionstograduallyteachcertainusersaboutthedevelopment
procedurestheprojectfollows.
Sources
Muchoftherawmaterialforthisbookcamefromfiveyearsofworkingwiththe
Subversionproject(Subversionisanopensource
versioncontrolsystem,writtenfromscratch,andintendedtoreplaceCVSasthe
defactoversioncontrolsystemofchoiceintheopensourcecommunity.The
projectwasstartedbymyemployer,CollabNet(inearly
2000,andthankgoodnessCollabNetunderstoodrightfromthestarthowtorun
itasatrulycollaborative,distributedeffort.Wegotalotofvolunteerdeveloper
buy-inearlyon;todaythereare50-somedevelopersontheproject,ofwhom
onlyafewareCollabNetemployees.
Subversionisinmanywaysaclassicexampleofanopensourceproject,andI
endedupdrawingonitmoreheavilythanIoriginallyexpected.Thiswaspartly
amatterofconvenience:wheneverIneededanexampleofaparticular
phenomenon,IcouldusuallycalloneupfromSubversionrightoffthetopofmy
head.Butitwasalsoamatterofverification.AlthoughIaminvolvedinother
freesoftwareprojectstovaryingdegrees,andtalktofriendsandacquaintances
involvedinmanymore,onequicklyrealizeswhenwritingforprintthatall
assertionsneedtobefact-checked.Ididn'twanttomakestatementsaboutevents
inotherprojectsbasedonlyonwhatIcouldreadintheirpublicmailinglist
archives.IfsomeoneweretotrythatwithSubversion,Iknew,she'dberight
abouthalfthetimeandwrongtheotherhalf.Sowhendrawinginspirationor
examplesfromaprojectwithwhichIdidn'thavedirectexperience,Itriedto
firsttalktoaninformantthere,someoneIcouldtrusttoexplainwhatwasreally
goingon.
Subversionhasbeenmyjobforthelast5years,butI'vebeeninvolvedinfree
softwarefor12.Otherprojectsthatinfluencedthisbookinclude:
TheGNUEmacstexteditorprojectattheFreeSoftwareFoundation,in
whichImaintainafewsmallpackages.
ConcurrentVersionsSystem(CVS),whichIworkedonintenselyin19941995withJimBlandy,buthavebeeninvolvedwithonlyintermittently
since.
ThecollectionofopensourceprojectsknownastheApacheSoftware
Foundation,especiallytheApachePortableRuntime(APR)andApache
HTTPServer.
OpenOffice.org,theBerkeleyDatabasefromSleepycat,andMySQL
Database;Ihavenotbeeninvolvedwiththeseprojectspersonally,buthave
observedthemand,insomecases,talkedtopeoplethere.
GDB,theGNUDebugger(likewise).
TheDebianProject(likewise).
Thisisnotacompletelist,ofcourse.Likemostopensourceprogrammers,I
keeploosetabsonmanydifferentprojects,justtohaveasenseofthegeneral
stateofthings.Iwon'tnameallofthemhere,buttheyarementionedinthetext
whereappropriate.
Conventions
Thefollowingconventionsareusedinthisbook:
Italic
Usedforfileanddirectorynames,forURLs,andforemphasiswhen
introducinganewterm.
Constantwidth
Usedforcodeexamples.
Constantwidthitalic
Insomecodeexamples,indicatesanelement(e.g.,afilename)thatyou
supply.
CommentsandQuestions
Pleaseaddresscommentsandquestionsconcerningthisbooktothepublisher:
O'ReillyMedia,Inc.
1005GravensteinHighwayNorth
Sebastopol,CA95472
(800)998-9938(intheUnitedStatesorCanada)
(707)829-0515(internationalorlocal)
(707)829-0104(fax)
Wehaveawebpageforthisbook,wherewelisterrata,examples,andany
additionalinformation.Youcanaccessthispageat:
/>Tocommentorasktechnicalquestionsaboutthisbook,sendemailto:
Formoreinformationaboutourbooks,conferences,ResourceCenters,andthe
O'ReillyNetwork,seeourwebsiteat:
SafariEnabled
WhenyouseeaSafari®Enabledicononthecoverofyourfavorite
technologybook,itmeansthebookisavailableonlinethroughtheO'Reilly
NetworkSafariBookshelf.
Safarioffersasolutionthat'sbetterthane-books.It'savirtuallibrarythatlets
youeasilysearchthousandsoftoptechnologybooks,cutandpastecode
samples,downloadchapters,andfindquickanswerswhenyouneedthemost
accurate,currentinformation.Tryitforfreeat.
Acknowledgments
ThisbooktookfourtimeslongertowritethanIthoughtitwould,andformuch
ofthattimefeltratherlikeihadagrandpianosuspendedabovemyhead
whereverIwent.Withouthelpfrommanypeople,Iwouldnothavebeenableto
completeitwhilestayingsane.
AndyOram,myeditoratO'Reilly,wasawriter'sdream.Asidefromknowing
thefieldintimately(hesuggestedmanyofthetopics),hehastheraregiftof
knowingwhatonemeanttosayandhelpingonefindtherightwaytosayit.It
hasbeenanhonortoworkwithhim.ThanksalsotoChuckToporekforsteering
thisproposaltoAndyrightaway.
BrianFitzpatrickreviewedalmostallofthematerialasIwroteit,whichnotonly
madethebookbetter,butkeptmewritingwhenIwantedtobeanywhereinthe
worldbutinfrontofthecomputer.BenCollins-SussmanandMikePilatoalso
checkeduponprogress,andwerealwayshappytodiscusssometimesat
lengthwhatevertopicIwastryingtocoverthatweek.TheyalsonoticedwhenI
sloweddown,andgentlynaggedwhennecessary.Thanks,guys.
BiellaColemanwaswritingherdissertationatthesametimeasIwaswriting
thisbook.Sheknowswhatitmeanstositdownandwriteeveryday,and
providedaninspiringexampleaswellasasympatheticear.Shealsohasa
fascinatinganthropologist's-eyeviewofthefreesoftwaremovement,givingboth
ideasandreferencesthatIwasableuseinthebook.AlexGolubanother
anthropologistwithonefootinthefreesoftwareworld,andalsofinishinghis
dissertationatthesametimewasexceptionallysupportiveearlyon,whichhelped
agreatdeal.
MicahAndersonsomehowneverseemedtoooppressedbyhisownwritinggig,
whichwasinspiringinasick,envy-generatingsortofway,buthewasever
readywithfriendship,conversation,and(onatleastoneoccasion)technical
support.Thanks,Micah!
JonTrowbridgeandSanderStrikergavebothencouragementandconcrete
helptheirbroadexperienceinfreesoftwareprovidedmaterialIcouldn'thave
gottenanyotherway.
ThankstoGregSteinnotonlyforfriendshipandwell-timedencouragement,but
forshowingtheSubversionprojecthowimportantregularcodereviewisin
buildingaprogrammingcommunity.ThanksalsotoBrianBehlendorf,who
tactfullydrummedintoourheadstheimportanceofhavingdiscussionspublicly;
Ihopethatprincipleisreflectedthroughoutthisbook.
ThankstoBenjamin"Mako"HillandSethSchoen,forvariousconversations
aboutfreesoftwareanditspolitics;toZackUrlockerandLouisSuarez-Pottsfor
takingtimeoutoftheirbusyschedulestobeinterviewed;toShaneonthe
Slashcodelistforallowinghisposttobequoted;andtoHaggenSoforhis
enormouslyhelpfulcomparisonofcannedhostingsites.
ThankstoAllaDekhtyar,Polina,andSonyafortheirunflaggingandpatient
encouragement.I'mverygladthatIwillnolongerhavetoend(orrather,try
unsuccessfullytoend)oureveningsearlytogohomeandworkon"TheBook."
ThankstoJackRepenningforfriendship,conversation,andastubbornrefusalto
everacceptaneasywronganalysiswhenaharderrightoneisavailable.Ihope
thatsomeofhislongexperiencewithbothsoftwaredevelopmentandthe
softwareindustryrubbedoffonthisbook.
CollabNetwasexceptionallygenerousinallowingmeaflexiblescheduleto
write,anddidn'tcomplainwhenitwentonfarlongerthanoriginallyplanned.I
don'tknowalltheintricaciesofhowmanagementarrivesatsuchdecisions,butI
suspectSandhyaKlute,andlaterMaheshMurthy,hadsomethingtodowithitmy
thankstothemboth.
TheentireSubversiondevelopmentteamhasbeenaninspirationforthepastfive
years,andmuchofwhatisinthisbookIlearnedfromworkingwiththem.I
won'tthankthemallbynamehere,becausetherearetoomany,butIimplore
anyreaderwhorunsintoaSubversioncommittertoimmediatelybuythat
committerthedrinkofhischoiceIcertainlyplanto.
ManytimesIrantedtoRachelScollonaboutthestateofthebook;shewas
alwayswillingtolisten,andsomehowmanagedtomaketheproblemsseem
smallerthanbeforewetalked.Thathelpedalotthanks.
Thanks(again)toNoelTaylor,whomustsurelyhavewonderedwhyIwantedto
writeanotherbookgivenhowmuchIcomplainedthelasttime,butwhose
friendshipandleadershipofGolosáhelpedkeepmusicandgoodfellowshipin
mylifeeveninthebusiesttimes.ThanksalsotoMatthewDeanandDorothea
Samtleben,friendsandlong-sufferingmusicalpartners,whowerevery
understandingasmyexcusesfornotpracticingpiledup.MeganJenningswas
constantlysupportive,andgenuinelyinterestedinthetopiceventhoughitwas
unfamiliartoheragreattonicforaninsecurewriter.Thanks,pal!
Ihadfourknowledgeableanddiligentreviewersforthisbook:YoavShapira,
AndrewStellman,DavanumSrinivas,andBenHyde.IfIhadbeenableto
incorporatealloftheirexcellentsuggestions,thiswouldbeabetterbook.Asit
was,timeconstraintsforcedmetopickandchoose,buttheimprovementswere
stillsignificant.Anyerrorsthatremainareentirelymyown.
Myparents,FrancesandHenry,werewonderfullysupportiveasalways,andas
thisbookislesstechnicalthanthepreviousone,Ihopethey'llfinditsomewhat
morereadable.
Finally,Iwouldliketothankthededicatees,KarenUnderhillandJimBlandy.
Karen'sfriendshipandunderstandinghavemeanteverythingtome,notonly
duringthewritingofthisbookbutforthelastsevenyears.Isimplywouldnot
havefinishedwithoutherhelp.LikewiseforJim,atruefriendandahacker's
hacker,whofirsttaughtmeaboutfreesoftware,muchasabirdmightteachan
airplaneaboutflying.
Disclaimer
Thethoughtsandopinionsexpressedinthisbookaremyown.Theydonot
necessarilyrepresenttheviewsofCollabNetoroftheSubversionproject.