Tải bản đầy đủ (.pdf) (435 trang)

OReilly producing open source software oct 2005 ISBN 0596007590

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.71 MB, 435 trang )

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.


×