[BACK]Return to anoncvs-paper.pdf CVS log [TXT][DIR] Up to [local] / www / papers

File: [local] / www / papers / anoncvs-paper.pdf (download)

Revision 1.1, Fri Sep 3 04:12:12 2004 UTC (19 years, 8 months ago) by marco
Branch: MAIN
CVS Tags: HEAD

PDF version of anoncvs-paper.

%PDF-1.3
%âãÏÓ
2 0 obj
<<
/Length 10011
>>
stream
BT
/TT2 1 Tf
14.4 0 0 14.4 134.28 671.1 Tm
0 g
/GS1 gs
0 Tc
0 Tw
[(Opening)-258.3(The)-258.3(Sour)16.7(ce)-250(Repository)-250(W)16.7(ith)-250(Anonymous)-250(CVS)]TJ
/TT4 1 Tf
12 0 0 12 174.48 625.5 Tm
[(Charles)-260(D.)-240(Cranor)-9050(Theo)-250(de)-250(Raadt)]TJ
/TT6 1 Tf
-0.67 -2.04 TD
[(A)40(T&T)-250(Labs-Resear)40(c)10(h)-6830(The)-260(OpenBSD)-240(Pr)40(oject)]TJ
-2.11 -1.17 TD
[(Florham)-240(P)80(ark,)-240(Ne)10(w)-260(J)20(er)10(se)30(y)50(,)-240(USA)-3980(Calgary)50(,)-240(Alberta,)-240(Canada)]TJ
/TT8 1 Tf
9 0 0 9 159 573.0601 Tm
[(chuck@research.att.com)-8173.3(deraadt@openbsd.org)]TJ
/TT2 1 Tf
12 0 0 12 161.4 529.98 Tm
(Abstract)Tj
/TT4 1 Tf
10 0 0 10 72 511.38 Tm
[(Anon)12(ymous)-384(CVS)-420(is)-432(an)-420(adv)24(anced)-384(source)]TJ
/TT9 1 Tf
17.2426 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-420(distrib)24(u-)]TJ
-17.7987 -1.2 TD
[(tion)-348(mechanism)-336(we)-348(created)-348(to)-348(allo)24(w)]TJ
/TT6 1 Tf
15.2136 0 TD
[(open)-336(sour)36(ce)]TJ
/TT4 1 Tf
5.2579 0 TD
(soft-)Tj
-20.4715 -1.188 TD
[(w)12(are)-288(projects)-288(to)-300(distrib)24(ute)-288(source)-276(code)-288(and)-288(information)]TJ
0 -1.2 TD
[(about)-336(code)-324(to)-348(Internet)-324(users.)-612(Built)-348(on)-336(top)-336(of)-336(the)-348(Con-)]TJ
T*
[(current)-228(V)108(ersions)-240(System)-240(\(CVS\))-252(re)24(vision)-228(control)-240(system,)]TJ
0 -1.188 TD
[(Anon)12(ymous)-396(CVS)-444(safely)-420(allo)24(ws)-432(anon)12(ymous)-396(read-only)]TJ
0 -1.2 TD
[(access)-372(to)-360(a)-360(CVS)-372(source)-360(repository)60(.)-624(Prior)-348(to)-360(the)-372(intro-)]TJ
T*
[(duction)-192(of)-204(Anon)12(ymous)-180(CVS,)-216(access)-216(to)-204(a)-216(CVS)-216(repository)]TJ
0 -1.188 TD
[(had)-288(to)-288(be)-300(restricted)-288(to)-288(a)-300(select)-300(group)-264(of)-300(pri)24(vile)12(ged)-264(soft-)]TJ
0 -1.2 TD
[(w)12(are)-192(de)24(v)12(elopers.)-264(The)-192(adv)24(antage)-180(of)-192(open)-180(source)-192(softw)12(are)]TJ
0 -1.188 TD
[(is)-420(that)-420(it)-420(promotes)-396(reliability)-408(and)-408(quality)-396(by)-420(allo)24(wing)]TJ
0 -1.2 TD
[(independent)-312(peer)-336(re)24(vie)24(w)-336(and)-324(rapid)-336(e)24(v)24(olution)-324(of)-336(source)]TJ
T*
[(code.)-732(By)-396(introducing)-360(Anon)12(ymous)-348(CVS,)-408(we)-384(ha)24(v)12(e)-384(e)12(x)0(-)]TJ
0 -1.188 TD
[(tended)-312(the)-324(concept)-300(of)-324(open)-312(source)-312(softw)12(are)-312(projects)-312(to)]TJ
/TT6 1 Tf
0 -1.2 TD
[(open)-240(sour)36(ce)-252(r)36(epository)]TJ
/TT4 1 Tf
9.3927 0 TD
[(projects.)-336(Ha)24(ving)-240(an)-252(open)-240(source)]TJ
-9.3927 -1.2 TD
[(repository)-252(allo)24(ws)-288(users)-276(to)-288(tak)12(e)-276(a)-288(more)-264(acti)24(v)12(e)-276(role)-276(in)-288(the)]TJ
0 -1.188 TD
[(deb)24(ugging)-228(and)-264(de)24(v)12(elopment)-228(of)-252(open)-252(source)-252(projects.)-360(In)]TJ
0 -1.2 TD
[(this)-444(paper)-432(we)-444(will)-444(e)12(xamine)-432(and)-432(compare)-420(the)-444(mecha-)]TJ
0 -1.188 TD
[(nisms)-288(used)-288(by)-288(open)-276(source)-276(projects)-288(to)-288(distrib)24(ute)-276(source)]TJ
0 -1.2 TD
[(code.)-672(W)84(e)-384(will)-384(present)-360(the)-360(design)-372(and)-360(implementation)]TJ
T*
[(of)-348(the)]TJ
/TT9 1 Tf
2.7507 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(rst)-348(Anon)12(ymous)-312(CVS)-360(serv)12(er)-348(\(used)-336(to)-348(distrib)24(ute)]TJ
-3.3068 -1.188 TD
[(the)-264(OpenBSD)-264(operating)-252(system\).)-360(W)84(e)-288(will)-276(e)12(xplain)-252(some)]TJ
0 -1.2 TD
[(of)-360(our)-360(concerns)-348(\(e.g.,)-372(security\))-360(and)-360(some)-360(of)-360(the)-360(prob-)]TJ
T*
[(lems)-216(we)-216(f)12(aced)-216(when)-204(trying)-192(to)-216(adapt)-204(CVS)-228(for)-204(anon)12(ymous)]TJ
0 -1.188 TD
[(use.)-492(W)84(e)-324(also)-312(will)-312(present)-300(other)-300(more)-288(recent)-300(source)]TJ
/TT9 1 Tf
21.0305 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(le)Tj
-21.5867 -1.2 TD
[(distrib)24(ution)-252(mechanisms)-264(that)-264(mak)12(e)-264(use)-276(of)-264(an)-264(open)-264(CVS)]TJ
0 -1.188 TD
[(repository)60(.)-852(Anon)12(ymous)-408(CVS)-456(is)-444(currently)-420(bring)-420(used)]TJ
0 -1.2 TD
[(by)-240(a)-252(number)-228(of)-252(projects)-240(including)-228(OpenBSD,)-240(FreeBSD,)]TJ
T*
[(Mozilla,)-240(Ecgs,)-240(Gnome,)-228(Python,)-216(and)-240(GNUstep.)]TJ
/TT2 1 Tf
12 0 0 12 72 143.34 Tm
[(1)-990(Intr)20(oduction)]TJ
/TT4 1 Tf
10 0 0 10 72 119.82 Tm
[(Ov)12(er)-264(the)-276(past)-276(fe)24(w)-264(years)-276(open)-252(source)-264(softw)12(are)-264(has)-276(made)]TJ
T*
(signi)Tj
/TT9 1 Tf
1.9448 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cant)-192(inroads)-192(in)-204(the)-192(mainstream)-192(softw)12(are)-192(w)12(orld)-192([7].)]TJ
-2.501 -1.2 TD
[(The)-204(popularity)-192(of)-204(open)-192(source)-204(operating)-192(systems)-216(such)-204(as)]TJ
0 -1.188 TD
[(Linux)-300([12)24(])-312(and)-300(BSD)-324([5)12(])-312(has)-312(generated)-288(great)-312(interest)-300(in)]TJ
0 -1.2 TD
[(the)-300(open)-288(source)-300(de)24(v)12(elopment)-264(softw)12(are)-300(model.)-456(The)-300(k)12(e)12(y)]TJ
24.12 45.804 TD
[(attrib)24(utes)-324(of)-336(the)-324(open)-324(source)-312(model)-324(are)-324(that)-336(the)-324(source)]TJ
0 -1.2 TD
[(code)-348(for)-348(a)-360(softw)12(are)-348(project)-348(is)-372(freely)-336(a)24(v)24(ailable)-360(\(usually)]TJ
0 -1.188 TD
[(o)12(v)12(e)0(r)-408(the)-420(Internet\))-396(and)-420(that)-420(the)-420(code’)60(s)-420(license)-420(guaran-)]TJ
0 -1.2 TD
[(tees)-336(the)-336(right)-324(to)-336(read,)-348(redistrib)24(ute,)-336(modify)60(,)-324(and)-336(use)-336(the)]TJ
T*
[(code)-204(freely)60(.)-276(The)-204(adv)24(antage)-192(of)-216(open)-204(source)-204(softw)12(are)-204(o)12(v)12(e)0(r)]TJ
0 -1.188 TD
[(closed)-288(proprietary)-264(softw)12(are)-288(is)-300(that)-288(it)-300(promotes)-276(softw)12(are)]TJ
0 -1.2 TD
[(reliability)-384(and)-384(quality)-384(by)-396(supporting)-360(independent)-360(peer)]TJ
0 -1.188 TD
[(re)24(vie)24(w)-300(and)-312(rapid)-300(e)24(v)24(olution)-300(of)-312(source)-300(code.)-504(An)12(yone)-288(on)]TJ
0 -1.2 TD
[(the)-288(Internet)-276(can)-288(do)24(wnload,)-264(e)12(xamine,)-288(enhance,)-276(or)-288(deb)24(ug)]TJ
T*
[(an)-336(open)-324(source)-324(program.)-552(This)-336(enables)-336(an)-324(open)-324(source)]TJ
0 -1.188 TD
[(project)-168(to)-192(ha)24(v)12(e)-180(a)-180(lar)12(ge)-180(Internet-based)-144(international)-168(de)24(v)12(el-)]TJ
0 -1.2 TD
[(oper)-300(community)-288(that)-324(is)-324(constantly)-300(w)12(orking)-300(on)-312(impro)12(v-)]TJ
T*
[(ing)-240(the)-240(project.)]TJ
0.996 -1.38 TD
[(While)-336(all)-336(users)-336(bene)]TJ
/TT9 1 Tf
8.3937 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(t)-324(from)-324(the)-324(open)-324(source)-324(model,)]TJ
-9.9459 -1.188 TD
[(only)-252(a)-276(relati)24(v)12(ely)-252(fe)24(w)-264(users)-276(tak)12(e)-264(adv)24(antage)-240(of)-264(ha)24(ving)-264(ac-)]TJ
0 -1.2 TD
[(cess)-420(to)-420(the)-408(source)-396(code.)-804(In)-408(f)12(act,)-456(most)-408(users)-420(of)-408(open)]TJ
T*
[(source)-384(programs)-372(install)-408(pre-compiled)-360(v)12(ersions)-384(of)-396(pro-)]TJ
0 -1.188 TD
[(grams)-384(from)-384(CDR)36(OM)-396(distrib)24(utions)-384(or)-384(the)-396(Internet)-372(and)]TJ
0 -1.2 TD
[(ne)24(v)12(e)0(r)-276(bother)-276(to)-288(either)-288(do)24(wnload,)-276(inspect,)-300(or)-288(modify)-276(the)]TJ
T*
[(source)-192(code.)-276(The)-192(fe)24(w)-192(users)-192(who)-192(do)-192(deal)-192(directly)-192(with)-204(the)]TJ
0 -1.188 TD
[(source)-288(code)-288(are)-300(usually)-288(open)-288(source)-288(de)24(v)12(elopers.)-444(These)]TJ
0 -1.2 TD
[(de)24(v)12(elopers)-324(ha)24(v)12(e)-348(special)-348(needs)-348(that)-348(are)-360(only)-336(partly)-336(met)]TJ
0 -1.188 TD
[(by)-288(projects)-288(that)-300(that)]TJ
/TT9 1 Tf
8.3406 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(t)-300(the)-300(standard)-288(de)]TJ
/TT9 1 Tf
6.7191 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(nition)-276(of)-300(“open)]TJ
-16.1719 -1.2 TD
[(source”)-312([7)12(].)-528(F)12(o)0(r)-312(e)12(xample,)-324(in)-324(addition)-300(to)-324(ha)24(ving)-300(access)]TJ
T*
[(to)-288(current)-276(snapshot)-276(of)-288(a)-300(project’)60(s)-288(source)-276(code,)-288(it)-300(is)-300(also)]TJ
0 -1.188 TD
[(useful)-180(to)-192(ha)24(v)12(e)-192(access)-192(to)-192(older)-180(v)12(ersions)-180(of)-180(source)]TJ
/TT9 1 Tf
18.9035 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les,)-204(an-)]TJ
-19.4596 -1.2 TD
[(notated)-276(per)24(-)]TJ
/TT9 1 Tf
4.8052 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-276(re)24(vision)-264(logs)-288(\(GNU-style)-276(“ChangeLog”)]TJ
/TT9 1 Tf
-5.3614 -1.2 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-288(are)-264(a)-288(poor)-252(substitute)-276(for)-264(this\),)-276(and)-276(the)-264(ability)-276(to)-276(set)]TJ
-0.5562 -1.188 TD
(the)Tj
/TT9 1 Tf
1.4497 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-240(in)-228(a)-228(source)-216(tree)-228(to)-228(a)-228(speci)]TJ
/TT9 1 Tf
11.3133 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(c)-228(date)-228(or)-216(release.)-300(It)-228(is)]TJ
-13.8753 -1.2 TD
[(also)-300(useful)-288(to)-300(be)-288(able)-300(to)-288(update)-288(a)-300(source)-276(tree)-300(to)-300(the)-288(lat-)]TJ
0 -1.188 TD
[(est)-360(v)12(ersion)-348(without)-348(ha)24(ving)-336(to)-360(do)24(wnload)-336(the)-348(entire)-360(tree)]TJ
0 -1.2 TD
[(while)-396(preserving)-372(local)-396(changes.)-756(Historically)60(,)-432(r)0(e)24(vision)]TJ
T*
[(control)-324(systems)-348(such)-336(as)-348(the)-348(Source)-324(Code)-348(Control)-324(Sys-)]TJ
0 -1.188 TD
[(tem)-228(\(SCCS\))-240([9)12(])-228(and)-216(the)-228(Re)24(vision)-228(Control)-216(System)-228(\(RCS\))]TJ
0 -1.2 TD
[([11)12(])-240(h)0(a)24(v)12(e)-240(pro)12(vided)-216(some)-240(of)-240(these)-240(features)-240(on)-240(a)-252(local)-240(ba-)]TJ
T*
(sis.)Tj
0.996 -1.38 TD
[(RCS)-264(and)-228(SCCS)-264(were)-240(designed)-216(to)-252(manage)-216(small-scale)]TJ
-0.996 -1.188 TD
[(projects)-360(with)-372(a)-372(centralized)-360(set)-372(of)-372(de)24(v)12(elopers)-348(thus)-360(the)12(y)]TJ
0 -1.2 TD
[(are)-288(not)-276(well-suited)-276(for)-276(lar)12(ge)-276(Internet-based)-252(open)-264(source)]TJ
ET
endstream
endobj
3 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/TT2 4 0 R
/TT4 5 0 R
/TT6 6 0 R
/TT8 7 0 R
/TT9 8 0 R
>>
/ExtGState <<
/GS1 9 0 R
>>
>>
endobj
12 0 obj
<<
/Length 13049
>>
stream
BT
/TT4 1 Tf
10 0 0 10 72 709.98 Tm
0 g
/GS1 gs
0 Tc
0 Tw
[(softw)12(are)-252(projects.)-348(Neither)-252(system)-264(has)-264(an)-252(Internet)-240(serv)12(er)]TJ
0 -1.2 TD
[(function)-288(that)-312(allo)24(ws)-312(de)24(v)12(elopers)-288(to)-312(check)-288(out)-312(a)-312(w)12(orking)]TJ
0 -1.188 TD
[(cop)12(y)-240(o)0(f)-252(a)-264(source)-240(tree)-252(on)-252(their)-252(local)-252(systems,)-264(mak)12(e)-252(mod-)]TJ
0 -1.2 TD
(i)Tj
/TT9 1 Tf
0.2778 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cations)-288(to)-300(it,)-312(and)-288(then)-288(mer)12(ge)-276(those)-300(changes)-276(back)-288(into)]TJ
-0.834 -1.2 TD
[(the)-252(main)-252(repository)60(.)-324(The)-252(introduction)-228(of)-252(the)-252(RCS-based)]TJ
0 -1.188 TD
[(Concurrent)-252(V)108(ersions)-276(System)-276(\(CVS\))-276([1)12(])-288(r)0(e)24(vision)-264(control)]TJ
0 -1.2 TD
[(system)-408(addresses)-408(these)-408(issues.)-816(It)-408(allo)24(ws)-408(lar)12(ge)-396(source)]TJ
0 -1.188 TD
[(trees)-348(to)-336(be)-336(managed)-324(as)-348(a)-348(group)-312(under)-324(RCS,)-360(and)-324(it)-348(has)]TJ
0 -1.2 TD
[(a)-264(netw)12(ork)-252(serv)12(er)-252(mode)-252(that)-264(allo)24(ws)-276(de)24(v)12(elopers)-228(to)-276(be)-252(dis-)]TJ
T*
[(trib)24(uted)-264(across)-264(the)-264(Internet)-252(and)-264(yet)-276(share)-264(the)-264(same)-276(CVS)]TJ
0 -1.188 TD
[(source)-228(repository)60(.)]TJ
0.996 -1.416 TD
[(Prior)-240(to)-252(our)-240(w)12(ork)-240(on)-252(Anon)12(ymous)-216(CVS,)-252(in)-252(order)-240(to)-252(be)]TJ
-0.996 -1.2 TD
[(able)-324(to)-336(use)-324(CVS)-336(to)-336(access)-336(a)-324(source)-324(repository)-300(one)-324(had)]TJ
T*
[(to)-348(ha)24(v)12(e)-336(an)-336(account)-336(on)-336(the)-348(machine)-324(hosting)-336(the)-336(reposi-)]TJ
0 -1.188 TD
[(tory)60(.)-372(Furthermore,)-240(the)-276(account)-252(had)-264(to)-264(ha)24(v)12(e)-264(write)-276(access)]TJ
0 -1.2 TD
[(to)-372(the)-384(RCS)]TJ
/TT9 1 Tf
5.0297 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-384(in)-384(the)-372(repository)60(.)-672(Thus,)-396(open)-360(source)]TJ
-5.5858 -1.188 TD
[(projects)-240(that)-252(used)-240(CVS)-264(to)-252(manage)-228(their)-240(source)-240(trees)-252(had)]TJ
0 -1.2 TD
[(to)-228(restrict)-228(access)-240(to)-228(their)-228(repositories)-216(to)-228(a)-228(select)-240(group)-204(of)]TJ
T*
[(pri)24(vile)12(ged)-240(softw)12(are)-252(de)24(v)12(elopers)-240(in)-264(order)-240(to)-264(protect)-252(them-)]TJ
0 -1.188 TD
[(selv)12(es)-336(from)-312(malicious)-324(attacks)-336(on)-324(their)-336(source)-312(tree.)-576(An)]TJ
0 -1.2 TD
[(unfortunate)-276(side)-312(ef)24(fect)-300(of)-300(this)-312(w)12(a)0(s)-324(non-pri)24(vile)12(ged)-252(users)]TJ
T*
[(and)-300(de)24(v)12(elopers)-288(could)-300(not)-300(access)-324(the)-312(CVS-based)-300(source)]TJ
0 -1.188 TD
[(tree)-240(and)-240(thus)-240(were)-240(lock)12(ed)-228(out)-240(from)-228(the)-252(information)-204(con-)]TJ
0 -1.2 TD
[(tained)-372(in)-372(it.)-708(Den)12(ying)-348(users)-384(access)-384(to)-372(this)-384(information)]TJ
0 -1.188 TD
[(runs)-264(counter)-240(to)-276(the)-264(open)-252(source)-252(philosophy)-240(and)-252(reduces)]TJ
0 -1.2 TD
[(the)-252(ef)24(fecti)24(v)12(eness)-228(of)-240(the)-252(open)-240(source)-240(de)24(v)12(elopment)-204(model)]TJ
T*
[(by)-336(making)-324(it)-360(more)-324(dif)]TJ
/TT9 1 Tf
9.0407 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cult)-336(for)-336(non-pri)24(vile)12(ged)-300(users)-336(to)]TJ
-9.5969 -1.188 TD
[(do)24(wnload,)-216(deb)24(ug,)-228(and)-228(manage)-228(their)-240(source)-240(trees.)]TJ
0.996 -1.416 TD
[(In)-384(the)-396(F)12(all)-396(of)-396(1995)-372(when)-384(we)-396(started)-396(our)-372(o)24(w)0(n)-396(open)]TJ
-0.996 -1.2 TD
[(source)-408(operating)-396(system)-420(project)-396(called)-420(OpenBSD,)-408(we)]TJ
T*
[(decided)-408(to)-420(use)-420(CVS)-420(to)-420(manage)-408(the)-420(OpenBSD)-408(source)]TJ
0 -1.188 TD
[(tree.)-528(Based)-324(on)-312(our)-300(e)12(xperiences)-300(with)-312(the)-324(pre)24(vious)-300(open)]TJ
0 -1.2 TD
[(source)-396(project)-384(we)-408(were)-396(in)36(v)24(olv)12(ed)-372(with,)-444(we)-408(recognized)]TJ
0 -1.188 TD
[(the)-240(inherent)-228(con)]TJ
/TT9 1 Tf
6.4099 0 TD
(ß)Tj
/TT4 1 Tf
0.5562 0 TD
[(ict)-240(between)-240(trying)-228(to)-252(maintain)-228(an)-252(open)]TJ
-6.966 -1.2 TD
[(en)36(vironment)-396(while)-444(maintaining)-408(a)-444(pri)24(v)24(ate)-420(CVS)-444(source)]TJ
T*
[(repository)-348(that)-372(only)-348(pri)24(vile)12(ged)-348(users)-372(could)-348(access.)-684(T)84(o)]TJ
0 -1.188 TD
[(resolv)12(e)-324(this)-348(con)]TJ
/TT9 1 Tf
6.4364 0 TD
(ß)Tj
/TT4 1 Tf
0.5562 0 TD
[(ict)-336(we)-336(created)-336(Anon)12(ymous)-300(CVS)-348(—)-348(a)]TJ
-6.9925 -1.2 TD
[(mechanism)-420(that)-432(lets)-444(anon)12(ymous)-396(Internet)-420(users)-432(access)]TJ
T*
[(a)-360(source)-336(repository)-336(without)-348(compromising)-312(its)-372(security)60(.)]TJ
0 -1.188 TD
[(Anon)12(ymous)-168(CVS)-216(e)24(v)24(olv)12(es)-204(the)-204(open)-192(source)-192(concept)-192(to)-216(the)]TJ
0 -1.2 TD
[(ne)12(xt)-372(le)24(v)12(el:)]TJ
/TT6 1 Tf
4.8309 0 TD
[(open)-360(sour)36(ce)-372(r)36(epository)]TJ
/TT4 1 Tf
9.3807 0 TD
[(.)-696(The)-372(adv)24(antage)-348(of)]TJ
-14.2116 -1.188 TD
[(open)-312(source)-312(repository)-312(projects)-312(o)12(v)12(e)0(r)-312(plain)-312(open)-312(source)]TJ
0 -1.2 TD
[(projects)-336(is)-360(that)-360(it)-348(puts)-348(the)-348(information)-324(and)-336(po)24(wer)-336(con-)]TJ
T*
[(tained)-252(in)-252(a)-252(CVS-based)-252(source)-252(repository)-228(in)-252(the)-252(hands)-252(of)]TJ
0 -1.188 TD
[(the)-276(a)24(v)12(erage)-264(de)24(v)12(eloper)60(.)-396(W)36(ith)-276(Anon)12(ymous)-252(CVS)-288(the)-276(re)24(vi-)]TJ
0 -1.2 TD
[(sions,)-312(histories,)-300(and)-300(branches)-276(of)-288(a)-312(CVS)-300(tree)-300(are)-300(public.)]TJ
T*
[(Anon)12(ymous)-288(CVS)-348(mak)12(es)-324(it)-336(easy)-324(to)-336(k)12(eep)-312(a)-336(lar)12(ge)-312(source)]TJ
0 -1.188 TD
[(tree)-216(up)-216(to)-216(date,)-216(e)24(v)12(en)-216(o)12(v)12(e)0(r)-192(a)-228(slo)24(w-speed)-204(modem)-204(link.)-288(The)]TJ
0 -1.2 TD
[(OpenBSD)-180(project)-180(e)24(v)12(en)-180(ships)-180(its)-204(CDR)36(OM)-192(with)-192(a)-192(check)12(ed)]TJ
0 -1.188 TD
[(out)-240(CVS)-264(tree)-252(so)-252(that)-240(OpenBSD)-252(users)-252(who)-240(are)-240(interested)]TJ
0 -1.2 TD
[(in)-432(using)-408(CVS)-444(can)-420(start)-432(right)-420(a)12(w)12(a)0(y)-420(without)-408(ha)24(ving)-408(to)]TJ
T*
[(do)24(wnload)-168(the)-192(whole)-180(tree)-192(from)-168(scratch.)-288(Anon)12(ymous)-156(CVS)]TJ
0 -1.188 TD
[(also)-396(acts)-408(as)-408(a)-408(training)-384(ground)-372(by)-384(allo)24(wing)-396(de)24(v)12(elopers)]TJ
0 -1.2 TD
[(ne)24(w)-300(t)0(o)-300(the)-300(project)-288(and/or)-288(CVS)-312(to)-312(safely)-300(get)-300(e)12(xperience)]TJ
24.12 63.804 TD
[(with)-252(the)]TJ
/TT8 1 Tf
3.5155 0 TD
(cvs)Tj
/TT4 1 Tf
2.0523 0 TD
[(command)-228(before)-240(being)-240(gi)24(v)12(e)0(n)-240(write)-252(access)]TJ
-5.5678 -1.2 TD
[(to)-288(the)-276(repository)60(.)-408(W)84(e)-288(belie)24(v)12(e)-276(that)-288(once)-276(de)24(v)12(elopers)-252(ha)24(v)12(e)]TJ
0 -1.188 TD
[(had)-348(e)12(xperience)-324(with)-360(an)-348(open)-348(source)-348(repository)-324(project)]TJ
0 -1.2 TD
[(the)12(y)-228(will)]TJ
/TT9 1 Tf
3.7333 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(nd)-228(the)-228(de)24(v)12(elopment)-204(en)36(vironment)-192(of)24(fered)-204(by)-228(a)]TJ
-4.2895 -1.2 TD
[(plain)-240(open)-228(source)-228(project)-240(to)-240(be)-240(inadequate.)]TJ
0.996 -1.188 TD
[(In)-216(this)-240(paper)-204(we)-228(e)12(xamine)-204(the)-228(issue)-228(of)-228(source)-216(code)-204(dis-)]TJ
-0.996 -1.2 TD
[(trib)24(ution)-180(for)-180(open)-168(source)-180(projects.)-276(In)-192(Section)-180(2)-192(w)0(e)-192(e)12(xam-)]TJ
T*
[(ine)-372(non-CVS)-360(based)-360(distrib)24(ution)-348(mechanisms)-360(used)-372(\(for)]TJ
0 -1.188 TD
[(the)-348(most)-336(part\))-336(prior)-336(to)-336(the)-348(introduction)-312(of)-336(Anon)12(ymous)]TJ
0 -1.2 TD
[(CVS.)-384(In)-384(Section)-372(3)-384(w)0(e)-384(describe)-372(the)-372(design)-372(and)-372(imple-)]TJ
T*
[(mentation)-300(the)]TJ
/TT9 1 Tf
5.8327 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(rst)-324(Anon)12(ymous)-288(CVS)-324(serv)12(ers,)-324(including)]TJ
-6.3889 -1.188 TD
[(issues)-336(such)-324(CVS)-336(limitations,)]TJ
/TT9 1 Tf
12.0393 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-336(locking,)-324(and)-324(security)60(.)]TJ
-12.5955 -1.2 TD
[(In)-348(Section)-336(4)-360(w)0(e)-348(present)-336(other)-348(CVS-based)-336(open)-336(source)]TJ
0 -1.188 TD
[(repository)-348(distrib)24(ution)-348(tools)-372(that)-372(were)-372(introduced)-336(after)]TJ
0 -1.2 TD
[(introduction)-288(of)-324(Anon)12(ymous)-276(CVS.)-336(Finally)60(,)-324(i)0(n)-324(Section)-312(5)]TJ
T*
[(we)-252(close)-240(by)-252(pro)12(viding)-204(pointers)-240(to)-240(the)-252(source)-240(code)-228(of)-252(the)]TJ
0 -1.188 TD
[(currently)-372(a)24(v)24(ailable)-396(open)-384(source)-384(repository)-384(distrib)24(ution)]TJ
0 -1.2 TD
[(tools)-336(and)-336(also)-348(a)-336(list)-360(of)-336(open)-324(source)-336(repository)-312(projects)]TJ
T*
[(and)-240(their)-240(respecti)24(v)12(e)-228(CVS)-252(serv)12(ers.)]TJ
/TT2 1 Tf
12 0 0 12 313.2 464.94 Tm
[(2)-990(T)70(raditional)-250(Distrib)20(ution)-250(Mechanisms)]TJ
/TT4 1 Tf
10 0 0 10 313.2 442.62 Tm
[(T)36(raditionally)60(,)-192(open)-204(source)-216(projects)-216(ha)24(v)12(e)-204(distrib)24(uted)-216(their)]TJ
T*
[(source)-216(code)-228(through)-204(a)-240(number)-204(of)-228(non-CVS)-228(based)-228(mech-)]TJ
T*
[(anisms)-612(including)-576(USENET)]TJ
/TT8 1 Tf
12.1762 0 TD
(comp.sources)Tj
/TT4 1 Tf
7.7892 0 TD
[(ne)24(ws-)]TJ
-19.9654 -1.188 TD
[(groups,)-720(anon)12(ymous)-600(FTP)108(,)-636(web,)-744(and)-624(SUP)108(.)-648(Recently)]TJ
0 -1.2 TD
[(projects)-444(ha)24(v)12(e)-444(also)-456(started)-444(using)-444(Rsync)-444(and)-444(CTM)-456(for)]TJ
0 -1.188 TD
[(source)-204(distrib)24(ution.)-276(While)-216(each)-204(of)-216(these)-216(mechanisms)-204(are)]TJ
0 -1.2 TD
[(useful)-192(for)-192(distrib)24(uting)-180(code,)-192(the)12(y)-192(d)0(o)-192(not)-192(address)-192(the)-204(issue)]TJ
T*
[(of)-216(distrib)24(uting)-204(the)-216(types)-216(of)-216(meta)-216(information)-192(a)24(v)24(ailable)-204(in)]TJ
0 -1.188 TD
[(a)-396(CVS)-396(source)-384(repository)60(.)-708(I)0(n)-372(this)-396(section)-384(we)-396(e)12(xamine)]TJ
0 -1.2 TD
[(each)-240(of)-240(these)-240(mechanisms)-228(in)-252(more)-228(detail.)]TJ
0.996 -1.2 TD
[(In)-216(the)-228(1980s)-216(and)-216(early)-216(1990s)-204(the)-228(moderated)-204(USENET)]TJ
/TT8 1 Tf
-0.996 -1.188 TD
(comp.sources)Tj
/TT4 1 Tf
7.5972 0 TD
[(ne)24(wsgroups)-408(were)-420(a)-420(popular)-396(w)12(a)0(y)-420(t)0(o)]TJ
-7.5972 -1.2 TD
[(distrib)24(ute)-348(open)-336(source)-336(code.)-624(T)84(o)-348(submit)-348(a)-360(program,)-348(an)]TJ
T*
[(author)-252(e-mailed)-252(the)-264(source)-264(code)-252(to)-276(the)-264(moderator)-240(of)-264(the)]TJ
0 -1.188 TD
[(appropriate)-216(USENET)-240(group.)-276(The)-240(moderator)-216(w)12(ould)-228(then)]TJ
0 -1.2 TD
[(compile)-204(and)-216(test)-228(the)-216(code,)-216(and)-216(if)-228(the)-216(program)-192(functioned)]TJ
T*
[(properly)-252(post)-288(it)-288(to)-288(the)-276(ne)24(wsgroup)-264(as)-288(a)-288(series)-288(of)-276(articles.)]TJ
0 -1.188 TD
[(As)-300(the)-300(postings)-288(w)12(ork)12(ed)-276(their)-288(w)12(a)0(y)-300(through)-264(the)-300(netw)12(ork,)]TJ
0 -1.2 TD
[(users)-312(w)12(ould)-300(collect)-312(them)-312(and)-300(unpack,)-300(compile,)-312(and)-312(in-)]TJ
0 -1.188 TD
[(stall)-348(the)-336(program.)-552(As)-348(the)-336(program)-312(e)24(v)24(olv)12(ed,)-336(the)-336(author)]TJ
0 -1.2 TD
[(of)-396(the)-396(program)-372(could)-384(forw)12(ard)-384(patches)-396(to)-396(the)-396(modera-)]TJ
T*
[(tor)-372(to)-384(test)-396(and)-372(post)-372(to)-384(the)-384(ne)24(wsgroup.)-672(There)-372(are)-384(se)24(v-)]TJ
0 -1.188 TD
[(eral)-336(problems)-324(that)-348(mak)12(e)-336(these)-336(USENET)-348(ne)24(wsgroups)-312(a)]TJ
0 -1.2 TD
[(less)-276(than)-252(ideal)-264(forum)-240(for)-264(the)-252(distrib)24(ution)-252(of)-264(open)-240(source)]TJ
T*
[(code.)-492(First,)-324(the)-312(group)-288(moderator)-288(is)-312(a)-312(bottleneck.)-480(Post-)]TJ
0 -1.188 TD
[(ings)-276(can)-264(be)-276(delayed)-264(weeks)-264(or)-276(e)24(v)12(en)-264(months)-252(a)12(w)12(aiting)-276(the)]TJ
0 -1.2 TD
[(moderators)-420(attention.)-900(This)-456(does)-444(not)-444(mesh)-444(well)-444(with)]TJ
0 -1.188 TD
[(the)-180(rapid)-180(de)24(v)12(elopment)-156(en)36(vironment)-144(associated)-180(with)-192(open)]TJ
0 -1.2 TD
[(source)-276(projects.)-408(While)-288(it)-288(is)-300(possible)-276(to)-276(ha)24(v)12(e)-276(an)-288(unmod-)]TJ
T*
[(erated)-240(source)-240(ne)24(wsgroup,)-228(it)-252(is)-264(not)-240(practical)-240(due)-252(to)-252(ab)24(un-)]TJ
0 -1.188 TD
[(dance)-216(of)-228(non-uniform)-180(and)-228(non-source)-192(postings)-228(\(e.g.,)-216(see)]TJ
/TT8 1 Tf
0 -1.2 TD
(alt.sources)Tj
/TT4 1 Tf
6.6011 0 TD
[(\).)-384(Second,)-276(moderating)-252(an)-276(acti)24(v)12(e)-264(source)]TJ
ET
endstream
endobj
13 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/TT2 4 0 R
/TT4 5 0 R
/TT6 6 0 R
/TT8 7 0 R
/TT9 8 0 R
>>
/ExtGState <<
/GS1 9 0 R
>>
>>
endobj
15 0 obj
<<
/Length 14795
>>
stream
BT
/TT4 1 Tf
10 0 0 10 72 709.98 Tm
0 g
/GS1 gs
0 Tc
0 Tw
[(ne)24(wsgroup)-348(is)-384(hard)-360(w)12(ork)-372(and)-360(it)-384(is)-384(dif)]TJ
/TT9 1 Tf
15.1966 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cult)-372(to)]TJ
/TT9 1 Tf
3.0213 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(nd)-372(v)24(ol-)]TJ
-19.3302 -1.2 TD
[(unteers)-312(to)-324(perform)-288(this)-324(thankless)-312(task.)-540(Third,)-312(handling)]TJ
0 -1.188 TD
[(multipart)-456(source)-468(postings)-456(is)-480(irritating)-468(for)-456(users)-468(since)]TJ
0 -1.2 TD
[(the)12(y)-276(must)-288(collect)-288(all)-300(the)-288(parts)-288(\(tracking)-264(do)24(wn)-276(parts)-288(that)]TJ
T*
[(are)-372(missing\))-372(and)-372(then)-372(assemble)-384(them)-372(together)60(.)-684(G)0(i)24(v)12(en)]TJ
0 -1.188 TD
[(the)-360(ab)24(undance)-336(of)-360(Internet)-348(connecti)24(vity)60(,)-360(i)0(t)-372(i)0(s)-372(often)-348(eas-)]TJ
0 -1.2 TD
[(ier)-384(to)-384(just)-384(FTP)-396(the)-384(sources)-372(rather)-372(than)-384(try)-372(and)-384(collect)]TJ
0 -1.188 TD
[(them)-312(from)-312(USENET)72(.)-312(Thus,)-336(it)-324(is)-336(not)-312(surprising)-312(that)-324(the)]TJ
0 -1.2 TD
[(USENET)-240(source)-228(ne)24(wsgroups)-228(are)-240(no)24(w)-228(mostly)-240(inacti)24(v)12(e)0(.)]TJ
0.996 -1.416 TD
[(Anon)12(ymous)-324(FTP)-360(and)-360(web)-348(serv)12(ers)-360(are)-348(popular)-336(w)12(ays)]TJ
-0.996 -1.2 TD
[(to)-324(distrib)24(ute)-324(both)-312(binary)-300(and)-324(source)-312(code.)-528(Archi)24(ving)-300(a)]TJ
0 -1.188 TD
[(collection)-252(of)-252(tar)36(,)-264(zip,)-264(or)-264(RPM)]TJ
/TT9 1 Tf
12.0216 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-276(containing)-240(snapshots)]TJ
-12.5777 -1.2 TD
[(of)-324(a)-324(project’)60(s)-324(source)-312(code)-312(allo)24(ws)-324(users)-336(to)-324(con)36(v)12(eniently)]TJ
T*
[(access)-312(programs)-288(on)-300(demand)-288(through)-288(the)-312(Internet.)-480(W)84(e)0(b)]TJ
0 -1.188 TD
[(serv)12(ers)-360(ha)24(v)12(e)-360(the)-360(additional)-348(adv)24(antage)-348(of)-360(being)-348(able)-360(to)]TJ
0 -1.2 TD
[(include)-252(e)12(xplanatory)-228(information)-228(intermix)12(ed)-240(with)-264(hyper)24(-)]TJ
0 -1.188 TD
[(te)12(xt)-300(links)-300(to)-312(source)-288(distrib)24(ution)]TJ
/TT9 1 Tf
12.8954 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les.)-492(There)-288(are)-300(a)-312(num-)]TJ
-13.4515 -1.2 TD
[(ber)-288(of)-288(disadv)24(antages)-264(to)-300(this)-300(type)-288(of)-288(distrib)24(ution)-276(mecha-)]TJ
T*
[(nism.)-468(First,)-312(it)-312(forces)-288(de)24(v)12(elopers)-276(to)-300(break)-288(their)-288(distrib)24(u-)]TJ
0 -1.188 TD
[(tion)-264(up)-264(into)-264(periodic)-240(releases.)-372(If)-264(there)-264(is)-276(a)-276(lar)12(ge)-252(amount)]TJ
0 -1.2 TD
[(of)-288(time)-300(between)-288(releases)-300(then)-288(there)-300(is)-300(a)-300(lar)12(ge)-288(delay)-288(be-)]TJ
T*
[(tween)-348(when)-336(changes)-336(are)-348(made)-336(and)-348(when)-336(the)12(y)-336(get)-348(dis-)]TJ
0 -1.188 TD
[(trib)24(uted)-288(to)-300(de)24(v)12(elopers)-276(on)-300(the)-300(Internet.)-456(If)-288(the)-300(amount)-288(of)]TJ
0 -1.2 TD
[(time)-264(between)-240(releases)-264(is)-264(short,)-264(then)-252(the)-252(FTP)-264(or)-252(web)-264(site)]TJ
0 -1.188 TD
[(becomes)-348(cro)24(wded)-324(with)-360(numerous)-324(release)-360(archi)24(v)12(e)]TJ
/TT9 1 Tf
20.3729 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(les,)Tj
-20.929 -1.2 TD
(patch)Tj
/TT9 1 Tf
2.5735 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les,)-480(or)-408(both.)-828(If)-420(the)-420(distrib)24(ution)-408(is)-432(lar)12(ge,)-444(then)]TJ
-3.1297 -1.2 TD
[(do)24(wnloading)-360(ne)24(w)-396(releases)-408(becomes)-384(painful)-384(for)-396(de)24(v)12(el-)]TJ
0 -1.188 TD
[(opers)-288(who)-300(are)-300(attached)-288(to)-300(the)-300(Internet)-288(via)-300(slo)24(w)-300(modem)]TJ
0 -1.2 TD
[(links)-264(because)-252(in)-264(order)-252(to)-264(stay)-264(current)-252(ne)24(w)-252(releases)-276(must)]TJ
T*
[(be)-300(constantly)-300(do)24(wnloaded.)-456(If)-300(patch)]TJ
/TT9 1 Tf
14.6554 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-312(are)-312(used,)-312(then)]TJ
-15.2116 -1.188 TD
[(de)24(v)12(elopers)-192(ha)24(v)12(e)-204(the)-204(added)-204(o)12(v)12(erhead)-180(of)-204(do)24(wnloading)-180(and)]TJ
0 -1.2 TD
[(applying)-276(the)-288(patches.)-444(Finally)60(,)-300(old)-288(releases)-300(are)-288(often)-288(re-)]TJ
0 -1.188 TD
[(mo)12(v)12(e)0(d)-240(from)-252(the)-252(FTP)-276(or)-252(web)-264(serv)12(er)-252(in)-264(order)-240(to)-264(conserv)12(e)]TJ
0 -1.2 TD
[(disk)-300(space.)-468(This)-312(mak)12(es)-300(it)-300(dif)]TJ
/TT9 1 Tf
11.7807 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cult)-300(to)-300(retrie)24(v)12(e)-288(and)-288(com-)]TJ
-12.3369 -1.2 TD
[(pare)-384(old)-396(v)12(ersions)-384(of)-396(a)-396(distrib)24(ution)-384(with)-396(ne)24(w)-396(v)12(ersions.)]TJ
0 -1.188 TD
[(The)-252(Linux)-240(k)12(ernel)-252(and)-240(GNU)-264(programs)-228(ha)24(v)12(e)-252(traditionally)]TJ
0 -1.2 TD
[(been)-240(distrib)24(uted)-228(through)-216(these)-240(mechanisms.)]TJ
0.996 -1.416 TD
[(Another)-252(w)12(a)0(y)-276(t)0(o)-264(distrib)24(ute)-276(code)-252(is)-288(through)-240(a)-276(Softw)12(are)]TJ
-0.996 -1.2 TD
[(Upgrade)-240(Protocol)-252(\(SUP\))-264(serv)12(er)-252([10)12(].)-360(SUP)-264(serv)12(ers)-252(oper)24(-)]TJ
0 -1.188 TD
[(ate)-276(by)-252(tracking)-252(the)-264(modi)]TJ
/TT9 1 Tf
9.7632 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cation)-252(times)-264(of)-264(a)-276(collection)-252(of)]TJ
-10.3194 -1.2 TD
(source)Tj
/TT9 1 Tf
2.9459 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les.)-600(SUP)-348(clients)-348(track)-336(the)-336(time)-348(the)12(y)-324(were)-348(last)]TJ
-3.502 -1.188 TD
[(run)-300(successfully)60(.)-492(When)-300(a)-324(SUP)-312(client)-312(is)-324(run)-300(it)-324(connects)]TJ
0 -1.2 TD
[(to)-252(a)-252(serv)12(er)-228(and)-240(asks)-252(for)]TJ
/TT9 1 Tf
9.4486 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-264(that)-240(ha)24(v)12(e)-240(changed)-228(since)-252(the)]TJ
-10.0047 -1.2 TD
[(last)-204(successful)-180(run.)-276(The)-180(SUP)-204(serv)12(er)-180(checks)-180(its)-204(timestamp)]TJ
0 -1.188 TD
[(database)-300(and)-312(deli)24(v)12(ers)-300(only)-300(those)]TJ
/TT9 1 Tf
13.4284 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les.)-528(The)-312(SUP)-312(serv)12(er)]TJ
-13.9846 -1.2 TD
[(can)-312(run)-312(the)]TJ
/TT9 1 Tf
4.8784 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-324(through)-288(a)-324(compression)-288(program)-288(to)-324(re-)]TJ
-5.4345 -1.2 TD
[(duce)-192(the)-192(bandwidth)-180(required)-180(to)-192(update)-192(a)-192(source)-192(tree.)-288(The)]TJ
0 -1.188 TD
[(adv)24(antage)-192(of)-204(SUP)-216(is)-228(that)-216(only)-192(the)]TJ
/TT9 1 Tf
13.3267 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-228(that)-204(ha)24(v)12(e)-204(changed)]TJ
-13.8829 -1.2 TD
[(are)-288(do)24(wnloaded.)-408(The)-288(disadv)24(antage)-264(of)-288(SUP)-300(is)-300(that)-300(local)]TJ
0 -1.188 TD
[(changes)-240(to)-264(source)]TJ
/TT9 1 Tf
7.3524 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-264(are)-264(not)-252(preserv)12(ed)-228(and)-252(entire)]TJ
/TT9 1 Tf
12.7163 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(les)Tj
-21.181 -1.2 TD
[(must)-240(be)-228(do)24(wnloaded)-204(when)-228(the)12(y)-228(are)-228(changed.)-276(Also,)-240(SUP)]TJ
T*
[(does)-264(not)-264(supply)-252(an)12(y)-252(r)0(e)24(vision)-264(information)-228(or)-264(allo)24(w)-264(older)]TJ
0 -1.188 TD
[(v)12(ersions)-204(of)]TJ
/TT9 1 Tf
4.562 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-228(to)-216(be)-204(accessed.)-288(Both)-216(CMU)-228(and)-204(the)-216(BSD)]TJ
-5.1182 -1.2 TD
[(open)-336(source)-324(operating)-324(systems)-348(projects)-336(ha)24(v)12(e)-336(made)-336(e)12(x)0(-)]TJ
24.12 63.804 TD
[(tensi)24(v)12(e)-240(use)-240(of)-240(SUP)-252(to)-240(distrib)24(ute)-240(source)]TJ
/TT9 1 Tf
15.63 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(les.)Tj
-15.1902 -1.308 TD
[(The)-408(Rsync)-420(distrib)24(ution)-396(program)-396(performs)-384(a)-420(similar)]TJ
-0.996 -1.188 TD
[(function)-348(to)-384(SUP)108(,)-372(b)24(ut)-372(in)-372(a)-384(more)-360(ef)]TJ
/TT9 1 Tf
13.9619 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cient)-360(w)12(a)0(y)-372([13)12(].)-696(In)]TJ
-14.518 -1.2 TD
[(SUP)-312(when)-300(a)]TJ
/TT9 1 Tf
5.3803 0 TD
(Þ)Tj
/TT4 1 Tf
0.5561 0 TD
[(le)-312(is)-312(updated)-300(the)-300(entire)]TJ
/TT9 1 Tf
9.5763 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-324(is)-312(transfered,)]TJ
-16.0689 -1.2 TD
[(ho)24(we)24(v)12(e)0(r)-192(i)0(n)-216(Rsync)-204(only)-204(the)-216(changes)-192(are)-216(sent.)-288(Rather)-216(than)]TJ
0 -1.188 TD
[(using)-228(a)-228(timestamp)-228(database,)-216(Rsync)-228(simply)-228(compares)-216(the)]TJ
0 -1.2 TD
[(timestamps)-336(and)-336(sizes)-348(of)-336(the)-336(source)-336(and)-324(tar)12(get)-336(v)12(ersions)]TJ
T*
[(of)-348(a)]TJ
/TT9 1 Tf
1.9849 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le.)-624(If)-348(there)-348(is)-360(a)-360(match)-336(then)-348(the)]TJ
/TT9 1 Tf
13.2058 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-360(is)-360(not)-348(trans-)]TJ
-16.3029 -1.188 TD
[(fered.)-288(On)-240(the)-240(other)-228(hand,)-216(if)-240(the)]TJ
/TT9 1 Tf
12.5206 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-252(does)-228(not)-240(match,)-228(then)]TJ
-13.0768 -1.2 TD
[(Rsync)-312(performs)-288(a)-324(rolling)-300(checksum)-288(o)12(v)12(e)0(r)-300(the)]TJ
/TT9 1 Tf
18.3173 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-324(to)-312(de-)]TJ
-18.8734 -1.188 TD
[(termine)-240(where)-228(changes)-240(ha)24(v)12(e)-240(been)-228(made.)-300(Rsync)-252(uses)-252(the)]TJ
0 -1.2 TD
[(results)-300(of)-288(this)-312(checksum)-276(to)-300(generate)-276(the)-300(dif)24(ferences)-276(be-)]TJ
T*
[(tween)-252(the)-264(source)-252(and)-240(tar)12(get)-252(v)12(ersions)-252(of)-252(the)]TJ
/TT9 1 Tf
17.3191 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le.)-360(The)-252(ad-)]TJ
-17.8753 -1.188 TD
[(v)24(antage)-288(of)-312(this)-312(approach)-288(is)-312(that)-312(it)-312(has)-312(lo)24(wer)-300(bandwidth)]TJ
0 -1.2 TD
[(requirements)-300(because)-312(only)-324(the)-324(changes)-312(are)-324(transferred,)]TJ
T*
[(and)-264(the)-276(rolling)-264(checksum)-252(algorithm)-252(eliminates)-276(the)-264(need)]TJ
0 -1.188 TD
[(to)-312(ha)24(v)12(e)-300(both)-300(v)12(ersions)-300(of)-300(a)]TJ
/TT9 1 Tf
10.8412 0 TD
(Þ)Tj
/TT4 1 Tf
0.5561 0 TD
[(le)-312(on)-300(the)-312(serv)12(er)-300(in)-312(order)-288(to)]TJ
-11.3974 -1.2 TD
[(generate)-288(a)-300(dif)24(f.)-468(Ho)24(we)24(v)12(e)0(r)36(,)-288(Rsync)-300(still)-312(has)-300(the)-300(limitation)]TJ
0 -1.188 TD
[(that)-384(it)-384(does)-372(not)-372(preserv)12(e)-360(local)-384(modi)]TJ
/TT9 1 Tf
14.7958 0 TD
(Þ)Tj
/TT4 1 Tf
0.5561 0 TD
[(cations)-360(to)-372(source)]TJ
/TT9 1 Tf
-15.3519 -1.2 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les,)-288(and)-264(it)-276(does)-276(not)-264(pro)12(vide)-240(access)-288(to)-264(older)-264(v)12(ersions)-264(of)]TJ
-0.5562 -1.2 TD
(source)Tj
/TT9 1 Tf
2.9459 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-348(or)-336(access)-348(to)-336(the)-348(types)-336(of)-336(meta)-336(information)]TJ
-3.502 -1.188 TD
[(stored)-240(in)-240(a)-252(CVS)-252(repository)60(.)]TJ
0.996 -1.308 TD
[(CTM)-240(\(“Current)-204(Through)-204(e-Mail”\))-216(is)-240(another)-216(softw)12(are)]TJ
-0.996 -1.2 TD
[(distrib)24(ution)-324(mechanism)-324(that)-348(transfers)-336(only)-324(the)-348(changes)]TJ
0 -1.188 TD
[(made)-300(to)-312(a)-312(collection)-300(of)]TJ
/TT9 1 Tf
9.6871 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-324(rather)-288(than)-312(entire)]TJ
/TT9 1 Tf
8.6644 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-312([4].)]TJ
-19.4638 -1.2 TD
[(CTM)-312(w)12(a)0(s)-312(designed)-300(to)-300(use)-312(the)-300(electronic)-300(mail)-312(as)-312(a)-312(data)]TJ
T*
[(transport)-324(mechanism.)-564(CTM)-348(operates)-324(by)-336(comparing)-312(an)]TJ
0 -1.188 TD
[(old)-312(and)-324(ne)24(w)-312(source)-312(tree)-324(and)-312(generating)-300(the)-312(dif)24(ferences)]TJ
0 -1.2 TD
[(between)-228(them.)-300(The)-240(dif)24(fs)-228(are)-252(brok)12(en)-216(up)-240(into)-240(e-mail)-228(sized)]TJ
0 -1.188 TD
[(chunks)-264(and)-276(mailed)-288(to)-276(a)-300(mailing)-264(list.)-444(CTM)-288(users)-288(collect)]TJ
0 -1.2 TD
[(the)-360(dif)24(fs)-348(from)-348(the)-360(mailing)-348(list)-372(and)-348(apply)-348(them)-348(to)-360(their)]TJ
T*
[(local)-252(source)-240(tree)-240(by)-252(using)-240(the)-252(CTM)-252(client)-252(program.)-288(The)]TJ
0 -1.188 TD
[(main)-372(adv)24(antage)-348(of)-372(CTM)-372(is)-396(that)-372(it)-384(does)-372(not)-360(require)-360(IP)]TJ
0 -1.2 TD
[(connecti)24(vity)-180(in)-204(order)-192(to)-204(use,)-216(b)24(u)0(t)-204(compared)-180(to)-204(CVS-based)]TJ
T*
[(mechanisms)-228(it)-252(is)-252(still)-264(limited.)]TJ
/TT2 1 Tf
12 0 0 12 313.2 265.62 Tm
[(3)-990(Anonymous)-230(CVS)-220(Design)-220(and)-230(Implemen-)]TJ
1.49 -1.16 TD
(tation)Tj
/TT4 1 Tf
10 0 0 10 313.2 227.34 Tm
[(CVS)-276(can)-264(be)-264(used)-264(to)-276(manage)-252(the)-264(source)]TJ
/TT9 1 Tf
15.9526 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-276(of)-264(a)-264(source)]TJ
-16.5088 -1.188 TD
[(tree.)-1056(The)-492(source)]TJ
/TT9 1 Tf
7.9531 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-504(are)-492(stored)-492(as)-504(a)-504(collection)-480(of)]TJ
-8.5092 -1.2 TD
[(RCS)-456(control)]TJ
/TT9 1 Tf
5.5867 0 TD
(Þ)Tj
/TT4 1 Tf
0.5561 0 TD
[(les)-456(called)-432(the)-432(CVS)-444(repository)60(.)-840(D)0(e)24(v)12(el-)]TJ
-6.1428 -1.2 TD
[(opers)-396(check)-384(out)-396(w)12(orking,)-420(fully)-384(writable)-396(v)12(ersions)-384(of)-396(a)]TJ
0 -1.188 TD
[(source)-324(tree,)-348(mak)12(e)-324(modi)]TJ
/TT9 1 Tf
9.5636 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cations)-312(to)-336(the)]TJ
/TT9 1 Tf
5.804 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les,)-360(and)-324(check)]TJ
-16.4799 -1.2 TD
[(the)-444(changes)-432(back)-444(into)-444(the)-444(repository)60(.)-888(CVS)-456(can)-444(also)]TJ
T*
[(mer)12(ge)-264(in)-276(changes)-276(committed)-264(by)-276(other)-264(users)-288(into)-276(a)-288(local)]TJ
0 -1.188 TD
[(repository)60(,)-204(display)-216(commit)-216(log)-216(messages,)-228(check)-216(out)-228(spe-)]TJ
0 -1.2 TD
(ci)Tj
/TT9 1 Tf
0.7217 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(c)-192(branches)-180(or)-180(dated)-192(v)12(ersions)-168(of)-192(a)-192(source)-180(tree,)-204(annotate)]TJ
-1.2778 -1.188 TD
[(each)-252(line)-252(of)-252(a)-264(source)]TJ
/TT9 1 Tf
8.4778 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-264(with)-252(the)-252(re)24(vision)-240(and)-252(author)-240(of)]TJ
-9.0339 -1.2 TD
[(that)-240(line,)-228(and)-228(update)-228(a)-240(source)-228(tree)-240(by)-228(transmitting)-216(only)-228(a)]TJ
T*
[(compressed)-228(v)12(ersion)-228(of)-240(the)-240(changes)-228(made)-240(to)-240(a)]TJ
/TT9 1 Tf
18.2111 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le.)-300(Thus,)]TJ
-18.7673 -1.188 TD
[(CVS)-384(pro)12(vides)-348(a)-384(more)-360(po)24(werful)-360(and)-360(useful)-372(abstraction)]TJ
0 -1.2 TD
[(for)-240(open)-228(source)-228(de)24(v)12(elopers)-216(than)-240(an)12(y)-240(o)0(f)-228(the)-252(softw)12(are)-228(dis-)]TJ
ET
endstream
endobj
16 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/TT2 4 0 R
/TT4 5 0 R
/TT9 8 0 R
>>
/ExtGState <<
/GS1 9 0 R
>>
>>
endobj
18 0 obj
<<
/Length 13482
>>
stream
BT
/TT4 1 Tf
10 0 0 10 72 709.98 Tm
0 g
/GS1 gs
0 Tc
0 Tw
[(trib)24(ution)-264(mechanisms)-264(described)-264(in)-276(the)-276(pre)24(vious)-252(section.)]TJ
0 -1.2 TD
[(Ho)24(we)24(v)12(e)0(r)36(,)-240(prior)-240(to)-264(the)-252(introduction)-228(of)-252(Anon)12(ymous)-228(CVS,)]TJ
0 -1.188 TD
[(CVS)-252(had)-228(a)-228(major)-228(limitation)-228(for)-228(open)-228(source)-216(projects:)-300(an)]TJ
0 -1.2 TD
[(account)-264(with)-276(write)-288(access)-288(to)-276(the)-288(CVS)-288(source)-264(repository)]TJ
T*
[(w)12(a)0(s)-336(required)-288(in)-324(order)-312(to)-324(use)-312(CVS.)-336(One)-324(of)-312(our)-312(goals)-312(in)]TJ
0 -1.188 TD
[(creating)-336(Anon)12(ymous)-324(CVS)-360(w)12(a)0(s)-360(t)0(o)-348(allo)24(w)-360(greater)-336(access)]TJ
0 -1.2 TD
[(to)-288(the)-276(OpenBSD)-276(project’)60(s)-276(CVS)-300(source)-276(repository)-252(in)-288(or)24(-)]TJ
0 -1.188 TD
[(der)-240(to)-240(ha)24(v)12(e)-228(a)-252(more)-228(open)-228(project)-228(and)-240(to)-240(encourage)-216(de)24(v)12(el-)]TJ
0 -1.2 TD
[(oper)-204(interest.)-288(W)84(e)-228(w)12(anted)-204(to)-216(allo)24(w)-216(a)0(n)12(yone)-192(on)-204(the)-216(Internet)]TJ
T*
[(to)-240(safely)-228(ha)24(v)12(e)-228(anon)12(ymous)]TJ
7 0 0 7 175.44 605.9401 Tm
(1)Tj
10 0 0 10 181.44 602.34 Tm
[(read-only)-216(access)-240(to)-240(our)-228(CVS)]TJ
-10.944 -1.188 TD
[(repository)-216(—)-252(a)-252(practice)-228(that)-252(w)12(a)0(s)-252(unheard)-216(of)-240(at)-240(the)-252(time.)]TJ
/TT2 1 Tf
12 0 0 12 72 562.14 Tm
[(3.1)-990(Anonymous)-250(CVS)-260(Goals)]TJ
/TT4 1 Tf
10 0 0 10 72 543.42 Tm
[(As)-456(we)-444(were)-432(designing)-432(OpenBSD’)60(s)-444(Anon)12(ymous)-408(CVS)]TJ
0 -1.2 TD
[(service,)-240(we)-240(had)-240(the)-240(follo)24(wing)-228(three)-228(goals)-240(in)-252(mind:)]TJ
/TT2 1 Tf
0 -1.908 TD
(Security:)Tj
/TT4 1 Tf
4.3677 0 TD
[(While)-300(we)-288(w)12(anted)-288(to)-288(allo)24(w)-288(the)-288(w)12(orld)-288(to)-288(ha)24(v)12(e)]TJ
-2.3757 -1.2 TD
[(read)-228(access)-252(to)-240(our)-228(CVS)-252(repository)60(,)-216(w)0(e)-240(did)-240(not)-228(wish)]TJ
0 -1.188 TD
[(to)-216(allo)24(w)-204(anon)12(ymous)]TJ
/TT6 1 Tf
8.1624 0 TD
(write)Tj
/TT4 1 Tf
2.2837 0 TD
[(access)-216(to)-216(it.)-288(Thus)-204(we)-216(had)]TJ
-10.446 -1.2 TD
[(to)-252(ensure)-228(that)-252(our)-240(Anon)12(ymous)-204(CVS)-264(system)-252(did)-240(not)]TJ
T*
[(compromise)-216(the)-240(security)-240(of)-240(our)-228(source)-240(repository)60(.)]TJ
/TT2 1 Tf
-1.992 -1.944 TD
(Ef)Tj
/TT10 1 Tf
1 0 TD
(Þ)Tj
/TT2 1 Tf
0.5562 0 TD
(ciency:)Tj
/TT4 1 Tf
3.4905 0 TD
[(CVS)-252(serv)12(er)-228(operations)-228(are)-240(kno)24(wn)-228(for)-240(being)]TJ
-3.0547 -1.2 TD
[(resource)-204(intensi)24(v)12(e)0(.)-276(While)-228(we)-228(were)-216(eager)-204(to)-228(pro)12(vide)]TJ
0 -1.188 TD
[(anon)12(ymous)-408(access)-444(to)-444(our)-420(repository)60(,)-468(w)0(e)-444(did)-432(not)]TJ
0 -1.2 TD
[(w)12(ant)-300(to)-288(do)-288(so)-300(at)-300(the)-288(e)12(xpense)-288(of)-288(bogging)-264(do)24(wn)-276(our)]TJ
T*
[(CVS)-276(machine.)-348(Thus)-264(we)-264(had)-264(to)-264(ensure)-252(that)-276(Anon)12(y-)]TJ
0 -1.188 TD
[(mous)-324(CVS)-348(did)-336(not)-336(place)-324(an)-336(undue)-324(b)24(urdon)-312(on)-324(our)]TJ
0 -1.2 TD
[(CVS)-252(system.)]TJ
/TT2 1 Tf
-1.992 -1.956 TD
[(Con)36(v)12(enience:)]TJ
/TT4 1 Tf
6.2089 0 TD
[(If)-372(an)-372(Anon)12(ymous)-336(CVS)-384(service)-360(is)-384(dif)]TJ
/TT9 1 Tf
15.2257 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(-)Tj
-19.9987 -1.188 TD
[(cult)-276(to)-288(access)-276(then)-276(no)-276(one)-264(will)-288(use)-276(it.)-420(Thus)-264(we)-288(de-)]TJ
0 -1.2 TD
[(signed)-300(our)-300(Anon)12(ymous)-276(CVS)-324(system)-312(to)-300(be)-312(as)-312(easy)]TJ
0 -1.188 TD
[(and)-204(con)36(v)12(enient)-180(to)-216(use)-216(as)-216(possible.)-288(F)12(o)0(r)-204(systems)-216(with)]TJ
0 -1.2 TD
[(CVS)-312(installed,)-312(accessing)-288(our)-288(CVS)-312(repository)-276(is)-312(as)]TJ
T*
[(easy)-408(as)-408(setting)-396(an)-396(en)36(vironment)-372(v)24(ariable)-384(and)-396(run-)]TJ
0 -1.188 TD
[(ning)-420(CVS.)-444(No)-420(usernames,)-468(passw)12(ords,)-468(or)-420(special)]TJ
0 -1.2 TD
[(programs)-168(\(other)-180(than)-180(CVS)-204(itself\))-192(are)-180(required)-168(to)-192(use)]TJ
T*
[(Anon)12(ymous)-204(CVS.)]TJ
/TT2 1 Tf
12 0 0 12 72 229.74 Tm
[(3.2)-990(Anonymous)-250(CVS)-260(Design)]TJ
/TT4 1 Tf
10 0 0 10 72 211.14 Tm
[(Based)-360(on)-336(our)-348(three)-348(goals)-348(we)-348(decided)-336(that)-348(Anon)12(ymous)]TJ
T*
[(CVS)-420(service)-408(should)-384(be)-408(of)24(fered)-384(from)-396(a)-420(machine)-384(other)]TJ
T*
[(than)-384(our)-384(main)-396(CVS)-396(serv)12(er)-384(system.)-756(This)-396(pro)12(vides)-372(se-)]TJ
0 -1.188 TD
[(curity)-432(by)-444(k)12(eeping)-432(all)-456(anon)12(ymous)-408(connections)-420(of)24(f)-444(the)]TJ
0 -1.2 TD
[(main)-504(CVS)-516(serv)12(er)60(.)-1080(The)-492(main)-504(serv)12(er)-492(need)-492(only)-492(dis-)]TJ
T*
[(trib)24(ute)-408(a)-408(cop)12(y)-408(o)0(f)-408(its)-420(CVS-controlled)-384(RCS)]TJ
/TT9 1 Tf
17.8305 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-420(to)-420(the)]TJ
-18.3867 -1.188 TD
[(anon)12(ymous)-312(system)-348(using)-336(a)-348(standard)-336(technique)-324(such)-348(as)]TJ
0 -1.2 TD
[(SUP)108(.)-444(I)0(t)-444(does)-444(not)-432(ha)24(v)12(e)-444(to)-444(trust)-444(the)-432(anon)12(ymous)-408(serv)12(er)]TJ
ET
q
89.28 0 0 -0.48 71.988 119.688 cm
/Im1 Do
Q
BT
6 0 0 6 82.8 112.62 Tm
(1)Tj
8 0 0 8 86.4 109.74 Tm
[(By)-225(“anon)15(ymous”)-270(we)-225(mean)-240(that)-255(resources)-255(can)-255(be)-240(accessed)-255(without)]TJ
-1.8 -1.17 TD
[(authenticating)-285(the)-210(user)-210(\(as)-210(in)-210(anon)15(ymous)-225(FTP\).)-180(Achie)30(ving)-255(truly)-225(anon)15(y-)]TJ
0 -1.185 TD
[(mous)-270(access)-300(is)-285(a)-285(more)-285(dif)]TJ
/TT9 1 Tf
10.3921 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cult)-315(problem)-300(that)-300(w)15(a)0(s)-285(b)0(e)15(yond)-300(the)-300(scope)-300(of)]TJ
-10.9482 -1.185 TD
[(our)-315(needs.)-510(A)-300(more)-330(anon)15(ymous)-330(access)-330(mechanism)-330(could)-330(be)-330(achie)30(v)15(e)0(d)]TJ
T*
[(by)-255(borro)30(wing)-285(ideas)-270(from)-240(a)-270(system)-255(such)-255(as)-255(Cro)30(wds)-270([8].)]TJ
10 0 0 10 313.2 709.98 Tm
[(system)-396(be)12(yond)-372(that.)-780(This)-396(also)-408(pro)12(vides)-372(ef)]TJ
/TT9 1 Tf
17.7566 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cienc)12(y)-384(b)0(y)]TJ
-18.3127 -1.2 TD
[(k)12(eeping)-360(Anon)12(ymous)-336(CVS)-384(serv)12(er)-360(and)-372(netw)12(orking)-348(load)]TJ
0 -1.188 TD
[(of)24(f)-468(the)-468(main)-468(serv)12(er)-456(machine.)-972(This)-480(is)-480(important)-456(be-)]TJ
0 -1.2 TD
[(cause)-348(our)-336(main)-348(CVS)-360(serv)12(er)-336(\()]TJ
/TT8 1 Tf
11.9904 0 TD
(cvs.openbsd.org)Tj
/TT4 1 Tf
9.0015 0 TD
0.324 Tc
[(\)i)324(s)]TJ
-20.9919 -1.2 TD
0 Tc
[(connected)-456(to)-492(the)-480(Internet)-468(by)-468(a)-492(l)0(o)24(w-bandwidth)-444(ISDN)]TJ
0 -1.188 TD
[(link.)-1188(Figure)-540(1)-540(sho)24(ws)-540(the)-540(relationship)-528(between)-540(the)]TJ
0 -1.2 TD
[(main)-264(OpenBSD)-276(CVS)-288(serv)12(er)-264(and)-276(the)-264(primary)-264(OpenBSD)]TJ
0 -1.188 TD
[(Anon)12(ymous)-240(CVS)-288(serv)12(er)-252(\()]TJ
/TT8 1 Tf
10.3664 0 TD
(anoncvs.openbsd.org)Tj
/TT4 1 Tf
11.4019 0 TD
(\).)Tj
-21.7682 -1.2 TD
[(T)84(o)-540(access)-540(the)-528(Anon)12(ymous)-504(CVS)-540(service,)-600(users)-528(sim-)]TJ
T*
[(ply)-816(set)-840(their)]TJ
/TT8 1 Tf
6.6932 0 TD
(CVSROOT)Tj
/TT4 1 Tf
5.0167 0 TD
[(en)36(vironment)-780(v)24(ariable)-804(to)]TJ
/TT8 1 Tf
-11.7099 -1.188 TD
(anoncvs@anoncvs.openbsd.org)Tj
/TT4 1 Tf
16.6346 0 TD
[(and)-480(run)-480(CVS)]TJ
-16.6346 -1.2 TD
[(commands)-264(normally)60(.)-408(The)-288(Anon)12(ymous)-252(CVS)-300(serv)12(er)-276(will)]TJ
T*
[(reject)-312(an)12(y)-312(attempt)-312(to)-324(modify)-300(its)-336(local)-312(cop)12(y)-312(o)0(f)-312(the)-324(CVS)]TJ
0 -1.188 TD
[(repository)60(.)]TJ
0.996 -1.344 TD
[(W)84(e)-300(also)-300(secured)-288(the)-288(en)36(vironment)-252(on)-288(the)-288(Anon)12(ymous)]TJ
-0.996 -1.2 TD
[(CVS)-216(serv)12(er)-192(in)-204(order)-192(to)-204(pre)24(v)12(ent)-180(malicious)-192(tampering)-180(with)]TJ
0 -1.188 TD
[(CVS)-288(service.)-372(Anon)12(ymous)-240(CVS)-276(is)-288(accessed)-264(through)-252(the)]TJ
0 -1.2 TD
[(special)-252(account)-240(“)]TJ
/TT8 1 Tf
6.8216 0 TD
(anoncvs)Tj
/TT4 1 Tf
4.2007 0 TD
[(.)72(”)-324(While)-264(this)-264(account)-240(has)-252(no)]TJ
-11.0223 -1.2 TD
[(passw)12(ord)-360(\(thus)-348(allo)24(wing)-360(an)12(yone)-336(to)-360(log)-360(into)-360(it\),)-396(it)-372(also)]TJ
0 -1.188 TD
[(has)-276(a)-276(special)-276(anoncvs)-252(shell)-276(that)-276(restricts)-276(what)-264(it)-288(can)-264(run)]TJ
0 -1.2 TD
[(to)-372(a)-384(single)-372(command:)-540(“)]TJ
/TT8 1 Tf
9.9434 0 TD
[(cvs)-588(server)]TJ
/TT4 1 Tf
5.9889 0 TD
[(.)72(”)-684(An)12(y)-360(attempt)]TJ
-15.9323 -1.188 TD
[(to)-312(run)-288(a)-312(command)-288(other)-300(than)-300(the)-300(CVS)-324(serv)12(er)-300(results)-300(in)]TJ
0 -1.2 TD
[(the)-408(anoncvs)-384(shell)-408(printing)-396(an)-396(error)-396(message)-408(and)-396(e)12(xit-)]TJ
T*
[(ing.)-600(When)-336(the)-348(anoncvs)-324(shell)-348(recei)24(v)12(e)0(s)-336(a)-348(request)-336(to)-336(run)]TJ
0 -1.188 TD
[(the)-348(CVS)-372(serv)12(er)-336(it)-360(uses)-360(the)]TJ
/TT8 1 Tf
11.2214 0 TD
(chroot)Tj
/TT4 1 Tf
3.9486 0 TD
[(system)-360(call)-348(to)-360(re-)]TJ
-15.17 -1.2 TD
[(strict)-336(access)-336(to)-324(the)-324(serv)12(er)-312(to)-336(a)-324(sandbox)12(ed)-300(en)36(vironment.)]TJ
T*
[(In)-324(order)-300(to)-324(use)]TJ
/TT8 1 Tf
6.3257 0 TD
(chroot)Tj
/TT4 1 Tf
3.9246 0 TD
[(the)-324(anoncvs)-300(shell)-324(must)-324(be)-324(se-)]TJ
-10.2503 -1.188 TD
[(tuid)-312(“root.)72(”)-492(While)-324(this)-312(is)-324(not)-312(optimal,)-324(we)-312(note)-300(that)-324(the)]TJ
0 -1.2 TD
[(anoncvs)-204(shell)-228(is)-240(a)-228(small)-228(program)-192(that)-228(immediately)-216(drops)]TJ
0 -1.188 TD
[(pri)24(vile)12(ges)-288(as)-312(soon)-288(as)-312(it)-312(uses)]TJ
/TT8 1 Tf
11.5644 0 TD
(chroot)Tj
/TT4 1 Tf
3.6006 0 TD
[(.)-480(W)84(e)-312(feel)-300(that)-312(the)]TJ
-15.1649 -1.2 TD
[(gains)-180(of)-180(using)-180(a)-192(restricted)-180(root)-180(en)36(vironment)-144(are)-192(w)12(orth)-180(the)]TJ
T*
[(risks)-264(of)-264(ha)24(ving)-252(a)-276(small)-264(setuid)-264(program.)-348(A)-276(partial)-252(listing)]TJ
0 -1.188 TD
[(of)-240(the)-240(anoncvs)-228(shell)-252(is)-252(sho)24(wn)-228(in)-240(Figure)-240(2.)]TJ
0.996 -1.344 TD
[(The)-228(only)]TJ
/TT9 1 Tf
3.7765 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-240(that)-240(reside)-228(in)-228(the)]TJ
/TT8 1 Tf
8.1616 0 TD
(chroot)Tj
/TT4 1 Tf
3.8286 0 TD
[(en)36(vironment)]TJ
-17.3188 -1.2 TD
[(are)-192(the)-192(commands)-168(necessary)-180(to)-192(run)-180(CVS)-204(\(the)]TJ
/TT8 1 Tf
17.7605 0 TD
(cvs)Tj
/TT4 1 Tf
1.9923 0 TD
(binary)Tj
-19.7528 -1.188 TD
[(and)-312(helper)-312(RCS)-336(commands\))-300(and)-312(the)-324(read-only)-300(cop)12(y)-312(o)0(f)]TJ
0 -1.2 TD
[(the)-204(CVS)-216(repository)-192(from)-192(the)-204(main)-204(CVS)-216(serv)12(er)60(.)-276(Note)-204(that)]TJ
T*
[(CVS)-396(v)12(ersion)-372(1.10)-360(and)-384(later)-384(v)12(ersions)-372(access)-384(RCS)]TJ
/TT9 1 Tf
20.6722 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(les)Tj
-21.2284 -1.188 TD
[(directly)-324(and)-324(thus)-336(the)-336(RCS)-348(helper)-324(commands)-312(no)-336(longer)]TJ
0 -1.2 TD
[(need)-324(to)-348(be)-336(in)-336(the)-336(sandbox)-324(area.)-576(The)-336(cop)12(y)-324(o)0(f)-336(the)-348(CVS)]TJ
T*
[(repository)-252(in)-276(the)-276(sandbox)-252(is)-288(o)24(wned)-264(by)-264(a)-276(user)-276(other)-264(than)]TJ
0 -1.188 TD
[(the)-408(anoncvs)-396(user)-408(to)-408(pre)24(v)12(ent)-384(an)12(y)-408(chance)-396(of)-408(an)-408(anon)12(y-)]TJ
0 -1.2 TD
[(mous)-420(user)-420(writing)-420(to)-420(it.)-852(The)-420(only)-408(writable)-420(directory)]TJ
0 -1.188 TD
[(in)-312(the)-312(sandbox)-288(en)36(vironment)-276(is)]TJ
/TT8 1 Tf
12.5297 0 TD
(/tmp)Tj
/TT4 1 Tf
2.7004 0 TD
[(which)-312(is)-312(required)]TJ
-15.2301 -1.2 TD
[(for)-360(CVS)-372(to)-372(operate)-348(properly)60(.)-636(Also)-372(note)-360(that)-372(there)-360(are)]TJ
T*
[(no)-336(setuid)]TJ
/TT9 1 Tf
4.0487 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-348(in)-336(the)-336(sandbox.)-564(Thus,)-348(if)-348(an)-324(anon)12(ymous)]TJ
-4.6048 -1.188 TD
[(user)-324(w)12(a)0(s)-336(t)0(o)-324(break)-312(out)-324(of)-324(the)-324(CVS)-336(serv)12(er)-312(\(e.g.,)-336(through)]TJ
0 -1.2 TD
[(a)-360(b)24(uf)24(fer)-336(o)12(v)12(e)0(r)]TJ
/TT9 1 Tf
5.2876 0 TD
(ß)Tj
/TT4 1 Tf
0.5562 0 TD
[(o)24(w)0(\))-336(i)0(t)-360(w)12(ould)-348(be)-348(v)12(ery)-348(dif)]TJ
/TT9 1 Tf
10.1104 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cult)-348(to)-348(do)-348(an)12(y)]TJ
-16.5103 -1.2 TD
[(damage)-264(other)-264(than)-264(interfere)-264(with)-276(other)-264(CVS)-288(serv)12(er)-264(pro-)]TJ
0 -1.188 TD
[(cesses)-360(running)-312(under)-324(the)-348(anoncvs)-324(account.)-576(The)-348(possi-)]TJ
0 -1.2 TD
[(bility)-252(of)-252(such)-252(interference)-228(could)-240(be)-252(a)24(v)24(oided)-240(by)-252(allo)24(wing)]TJ
0 -1.188 TD
[(the)-264(anoncvs)-252(shell)-276(to)-264(randomly)-240(distrib)24(ute)-264(its)-288(UID)-264(among)]TJ
0 -1.2 TD
[(a)-216(speci)]TJ
/TT9 1 Tf
2.7145 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(c)-216(range)-192(of)-216(UIDs)-216(reserv)12(ed)-192(for)-204(anon)12(ymous)-168(access.)]TJ
-2.2747 -1.344 TD
[(The)-288(main)-288(adv)24(antage)-264(of)-288(using)-276(an)-288(anoncvs)-276(shell)-288(rather)]TJ
ET
endstream
endobj
19 0 obj
<<
/ProcSet [/PDF /Text /ImageB ]
/Font <<
/TT2 4 0 R
/TT4 5 0 R
/TT6 6 0 R
/TT8 7 0 R
/TT9 8 0 R
/TT10 20 0 R
>>
/XObject <<
/Im1 21 0 R
>>
/ExtGState <<
/GS1 9 0 R
>>
>>
endobj
23 0 obj
<<
/Length 11727
>>
stream
BT
/TT12 1 Tf
12.15 0 0 12.15 303.855 591.75 Tm
0 0 0 rg
/GS1 gs
0 Tc
0 Tw
(anonymous cvs)Tj
ET
0 0 0 RG
0 J 0 j 1.35 w 10 M []0 d
1 i 
124.98 706.5 108 -67.5 re
S
BT
12.15 0 0 12.15 134.4023 709.875 Tm
(cvs.openbsd.org)Tj
9.45 0 0 9.45 142.4812 642.375 Tm
(master repository)Tj
ET
354.48 642.36 m
354.48 625.593 330.288 611.985 300.48 611.985 c
270.672 611.985 246.48 625.593 246.48 642.36 c
246.48 659.127 270.672 672.735 300.48 672.735 c
330.288 672.735 354.48 659.127 354.48 642.36 c
s
q
0 792.06 612 -792 re
396.15 679.59 m
401.73 679.5 l
396.78 676.98 l
402.675 678.33 l
402.09 680.985 l
W n
0.338 w 
199.23 676.125 m
300.48 655.875 l
401.73 679.5 l
S
Q
0 g
0.338 w 
396.15 679.59 m
401.73 679.5 l
396.78 676.98 l
396.15 679.59 l
b*
[0.675 2.025 ]2.025 d
401.73 699.75 m
445.605 699.75 l
445.605 655.875 l
401.73 655.875 l
s
1.35 w []0 d
367.98 706.5 108 -67.5 re
S
q
0 792.06 612 -792 re
301.83 570.15 m
300.48 564.75 l
299.13 570.15 l
299.13 564.075 l
301.83 564.075 l
W n
0.338 w 
300.48 564.75 m
300.48 622.125 l
401.73 662.625 l
S
Q
0.338 w 
301.83 570.15 m
300.48 564.75 l
299.13 570.15 l
301.83 570.15 l
b*
1.35 w 
246.48 578.25 108 -74.25 re
S
BT
12.15 0 0 12.15 280.2171 639 Tm
0 0 0 rg
(internet)Tj
-3.5829 2.7778 TD
[(sup)-7276.6(sup)]TJ
10.4693 3.0556 TD
(anoncvs.openbsd.org)Tj
9.45 0 0 9.45 385.2136 642.375 Tm
(sandboxed mirror)Tj
-12.135 -14.2857 TD
(anoncvs client)Tj
ET
0 G
0.338 w 
289.872 553.537 m
293.261 551.029 297.366 549.675 301.582 549.675 c
305.799 549.675 309.904 551.029 313.293 553.537 c
S
BT
9.45 0 0 9.45 295.3065 535.9951 Tm
0 g
(src)Tj
ET
313.26 557.46 m
313.26 555.324 308.018 553.59 301.56 553.59 c
295.102 553.59 289.86 555.324 289.86 557.46 c
289.86 559.596 295.102 561.33 301.56 561.33 c
308.018 561.33 313.26 559.596 313.26 557.46 c
h
411.37 665.138 m
414.748 662.601 418.858 661.23 423.083 661.23 c
427.307 661.23 431.417 662.601 434.795 665.138 c
434.82 692.46 m
434.82 690.324 429.578 688.59 423.12 688.59 c
416.662 688.59 411.42 690.324 411.42 692.46 c
411.42 694.596 416.662 696.33 423.12 696.33 c
429.578 696.33 434.82 694.596 434.82 692.46 c
h
434.805 690.48 m
434.805 665.145 l
411.36 690.48 m
411.36 665.145 l
S
BT
9.45 0 0 9.45 414.7047 670.995 Tm
(/cvs)Tj
ET
168.372 688.537 m
171.761 686.029 175.866 684.675 180.082 684.675 c
184.299 684.675 188.404 686.029 191.793 688.537 c
168.37 665.138 m
171.748 662.601 175.858 661.23 180.082 661.23 c
184.307 661.23 188.417 662.601 191.795 665.138 c
191.82 692.46 m
191.82 690.324 186.578 688.59 180.12 688.59 c
173.662 688.59 168.42 690.324 168.42 692.46 c
168.42 694.596 173.662 696.33 180.12 696.33 c
186.578 696.33 191.82 694.596 191.82 692.46 c
h
191.805 690.48 m
191.805 665.145 l
168.36 690.48 m
168.36 665.145 l
S
BT
9.45 0 0 9.45 171.7047 670.995 Tm
(/cvs)Tj
ET
411.372 688.537 m
414.761 686.029 418.866 684.675 423.083 684.675 c
427.299 684.675 431.404 686.029 434.793 688.537 c
313.305 555.48 m
313.305 530.145 l
289.86 555.48 m
289.86 530.145 l
289.87 530.138 m
293.248 527.601 297.358 526.23 301.582 526.23 c
305.807 526.23 309.917 527.601 313.295 530.138 c
S
BT
/TT4 1 Tf
10 0 0 10 72 480.54 Tm
[(Figure)-336(1:)-504(OpenBSD’)60(s)-348(Anon)12(ymous)-312(CVS)-360(service.)-600(The)-336(CVS)-360(repository)-324(is)-360(mirrored)-312(within)-348(the)-348(sandbox)-324(using)-336(SUP)]TJ
0 -1.2 TD
[(\(Rsync)-240(could)-228(also)-252(be)-240(used\).)]TJ
0 -4.2 TD
[(than)-408(a)-420(specialized)-408(serv)12(er)-408(program)-384(is)-432(that)-408(it)-420(inte)12(grates)]TJ
0 -1.188 TD
[(nicely)-312(with)-324(CVS’)60(s)-348(serv)12(er)-312(system)-324(and)-312(can)-324(be)-324(used)-312(with)]TJ
0 -1.2 TD
[(standard)-420(login)-432(programs)-408(such)-432(as)-444(rsh)-444(and)-432(ssh.)-888(Man)12(y)]TJ
T*
[(Anon)12(ymous)-408(CVS)-444(serv)12(ers)-432(disallo)24(w)-444(rsh)-432(access)-444(and)-432(al-)]TJ
0 -1.188 TD
[(lo)24(w)-300(only)-288(ssh)-300(access)-312(for)-288(added)-276(security)60(.)-456(F)12(or)-288(ssh,)-324(a)-300(non-)]TJ
0 -1.2 TD
[(standard)-192(serv)12(er)-192(port)-192(such)-192(as)-216(2022)-180(can)-204(be)-192(used)-204(in)-204(addition)]TJ
T*
[(to)-204(the)-216(standard)-192(port)-192(to)-216(mak)12(e)-204(Anon)12(ymous)-168(CVS)-216(more)]TJ
/TT9 1 Tf
20.6186 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(re-)Tj
-21.1747 -1.188 TD
[(w)12(all)-312(friendly)60(.)-468(This)-312(allo)24(ws)-312(users)-312(to)-312(w)12(ork)-300(around)-276(poorly)]TJ
0 -1.2 TD
(thought-out)Tj
/TT9 1 Tf
4.8705 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(re)24(w)12(alls)-252(that)-240(are)-240(con)]TJ
/TT9 1 Tf
7.7478 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(gured)-216(to)-240(block)-240(all)-240(un-)]TJ
-13.7306 -1.188 TD
[(kno)24(wn)-228(traf)]TJ
/TT9 1 Tf
4.2899 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(c)-240(i)0(n)-240(the)-240(reserv)12(ed)-228(TCP)-252(port)-228(range.)]TJ
-3.85 -1.272 TD
[(Note)-300(that)-312(an)-300(Anon)12(ymous)-264(CVS)-324(serv)12(er)-288(is)-312(more)-300(secure)]TJ
-0.996 -1.2 TD
[(than)-420(most)-420(Anon)12(ymous)-396(FTP)-432(serv)12(ers.)-840(This)-432(is)-432(because)]TJ
0 -1.188 TD
[(standard)-240(FTP)-264(serv)12(ers)-252(ne)24(v)12(e)0(r)-240(r)0(e)24(v)24(o)0(k)12(e)-252(their)-252(root)-252(access.)-348(In-)]TJ
0 -1.2 TD
[(stead,)-252(the)12(y)-240(just)-252(sw)12(ap)-252(UIDs)-252(when)-240(accessing)]TJ
/TT9 1 Tf
17.3944 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les.)-336(On)-252(the)]TJ
-17.9506 -1.188 TD
[(other)-276(hand,)-288(the)-300(anoncvs)-264(shell)-300(permanently)-264(re)24(v)24(o)0(k)12(e)0(s)-276(root)]TJ
0 -1.2 TD
[(access)-252(before)-228(running)-216(the)-240(CVS)-252(serv)12(er)60(.)]TJ
/TT2 1 Tf
12 0 0 12 72 214.14 Tm
[(3.3)-990(Anonymous)-460(CVS)-450(Implementation)-460(Is-)]TJ
2.24 -1.16 TD
(sues)Tj
/TT4 1 Tf
10 0 0 10 72 180.18 Tm
[(As)-300(we)-288(implemented)-276(Anon)12(ymous)-252(CVS,)-300(we)-288(encountered)]TJ
0 -1.188 TD
[(three)-348(issues)-360(relating)-348(to)-348(CVS)-360(that)-360(caused)-348(us)-348(some)-348(con-)]TJ
0 -1.2 TD
[(cern.)-288(First,)-228(we)-228(disco)12(v)12(ered)-204(that)-228(CVS)-228(did)-228(not)-216(run)-216(properly)]TJ
0 -1.188 TD
[(without)-192(write)-216(access)-216(to)-204(its)-216(log)]TJ
/TT9 1 Tf
11.9125 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le.)-288(Since)-216(CVS)-216(itself)-216(is)-216(an)]TJ
-12.4687 -1.2 TD
[(open)-300(source)-300(program,)-300(we)]TJ
/TT9 1 Tf
10.5694 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(x)12(e)0(d)-300(this)-312(problem)-300(by)-300(adding)]TJ
-11.1256 -1.2 TD
(the)Tj
/TT8 1 Tf
1.4737 0 TD
(CVSREADONLYFS)Tj
/TT4 1 Tf
8.0173 0 TD
[(en)36(vironment)-216(v)24(ariable)-228(to)-252(CVS.)-264(If)]TJ
-9.491 -1.188 TD
[(set,)-252(CVS)-252(ignores)-228(this)-252(error)60(.)]TJ
0.996 -1.272 TD
[(Our)-288(second)-276(concern)-264(with)-288(Anon)12(ymous)-252(CVS)-300(w)12(a)0(s)-300(h)0(o)24(w)]TJ
-0.996 -1.188 TD
[(it)-228(interacted)-216(with)-228(CVS’)60(s)]TJ
/TT9 1 Tf
9.7949 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-240(locking)-204(protocol.)-276(CVS)-228(con-)]TJ
-10.351 -1.2 TD
[(trols)-192(access)-204(to)-192(RCS)]TJ
/TT9 1 Tf
7.7915 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-204(by)-180(creating)-180(lock)]TJ
/TT9 1 Tf
7.8087 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-204(in)-192(the)-192(CVS)]TJ
7.4074 35.46 TD
[(repository)-216(area.)-288(Under)-228(Anon)12(ymous)-204(CVS)-240(this)-240(is)-252(not)-228(pos-)]TJ
0 -1.188 TD
[(sible)-192(since)-192(the)-192(Anon)12(ymous)-156(CVS)-204(serv)12(er)-180(runs)-180(under)-168(a)-192(UID)]TJ
0 -1.2 TD
[(that)-264(does)-252(not)-264(ha)24(v)12(e)-252(write)-264(access)-264(to)-264(the)-264(repository)60(.)-324(T)84(o)-264(ad-)]TJ
T*
[(dress)-384(this)-396(issue)-384(we)-384(disabled)]TJ
/TT9 1 Tf
11.9185 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-396(locking)-372(for)-372(read-only)]TJ
-12.4747 -1.188 TD
[(access.)-660(Since)-360(commits)-360(are)-360(not)-360(allo)24(wed)-348(in)-372(the)-360(Anon)12(y-)]TJ
0 -1.2 TD
[(mous)-312(CVS)-336(serv)12(er’)60(s)-324(cop)12(y)-312(o)0(f)-324(the)-324(repository)-300(this)-336(is)-324(not)-324(a)]TJ
T*
[(problem.)-348(Ho)24(we)24(v)12(e)0(r)36(,)-240(another)-252(possible)-252(problem)-252(is)-264(that)-276(the)]TJ
0 -1.188 TD
[(Anon)12(ymous)-192(CVS)-240(serv)12(er)-228(may)-216(encounter)-204(a)-240(partially)-216(com-)]TJ
0 -1.2 TD
[(plete)-324(RCS)]TJ
/TT9 1 Tf
4.4935 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-336(in)-324(its)-336(cop)12(y)-324(o)0(f)-312(the)-324(repository)60(.)-528(W)84(e)-336(e)12(xam-)]TJ
-5.0496 -1.188 TD
[(ined)-216(the)-228(CVS)-240(documentation)-192(and)-216(source)-228(code)-216(and)-216(deter)24(-)]TJ
0 -1.2 TD
[(mined)-312(this)-336(w)12(a)0(s)-324(unlik)12(ely)-312(for)-324(the)-324(follo)24(wing)-300(tw)12(o)-324(reasons.)]TJ
T*
[(First,)-360(CVS)-336(on)-324(the)-336(main)-324(serv)12(er)-312(updates)-324(its)-336(RCS)]TJ
/TT9 1 Tf
19.571 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-336(in)]TJ
-20.1272 -1.188 TD
[(one)-312(operation)-288(by)-312(creating)-300(a)-324(temporary)-288(RCS)]TJ
/TT9 1 Tf
18.0318 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le,)-348(modi-)]TJ
-18.5879 -1.2 TD
[(fying)-300(it,)-348(and)]TJ
/TT9 1 Tf
5.3204 0 TD
(Þ)Tj
/TT4 1 Tf
0.5561 0 TD
[(nally)-324(renaming)-300(it)-324(to)-324(the)-312(RCS)]TJ
/TT9 1 Tf
12.1532 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le.)-540(Since)]TJ
-18.5858 -1.2 TD
(the)Tj
/TT8 1 Tf
1.5697 0 TD
(rename)Tj
/TT4 1 Tf
3.9486 0 TD
[(system)-360(call)-360(is)-360(atomic,)-372(there)-348(is)-372(no)-348(chance)]TJ
-5.5183 -1.188 TD
[(of)-372(the)-360(mechanism)-360(used)-372(to)-372(transfer)-360(RCS)]TJ
/TT9 1 Tf
16.7436 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-384(from)-360(the)]TJ
-17.2997 -1.2 TD
[(main)-384(serv)12(er)-384(to)-384(the)-396(anon)12(ymous)-348(serv)12(er)-384(encountering)-360(an)]TJ
0 -1.188 TD
[(incomplete)-336(RCS)]TJ
/TT9 1 Tf
7.041 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le.)-624(Second,)-372(we)-348(use)-360(SUP)-360(to)-348(transfer)]TJ
-7.5972 -1.2 TD
[(our)-348(RCS)]TJ
/TT9 1 Tf
3.9551 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-372(from)-348(the)-360(main)-360(serv)12(er)-348(to)-360(the)-360(anon)12(ymous)]TJ
-4.5113 -1.2 TD
[(serv)12(er)60(.)-708(When)-384(SUP)-384(installs)-396(an)-372(updated)]TJ
/TT9 1 Tf
16.3899 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-396(it)-384(uses)-396(the)]TJ
-16.9461 -1.188 TD
[(same)-228(atomic-rename)-204(technique)-204(that)-228(the)-228(CVS)-240(serv)12(er)-216(uses)]TJ
0 -1.2 TD
[(to)-264(install)-264(a)-276(n)0(e)24(w)]TJ
/TT9 1 Tf
6.364 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le.)-372(This)-252(pre)24(v)12(ents)-252(the)-264(CVS)-264(serv)12(ers)-264(run-)]TJ
-6.9202 -1.2 TD
[(ning)-372(on)-372(the)-384(anon)12(ymous)-336(serv)12(er)-372(from)-372(seeing)-372(an)-384(incom-)]TJ
0 -1.188 TD
[(plete)-288(RCS)]TJ
/TT9 1 Tf
4.4335 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le.)-444(One)-288(possible)-276(problem)-276(that)-288(could)-276(be)-288(en-)]TJ
-4.9896 -1.2 TD
[(countered)-312(is)-348(if)-348(CVS)-348(reads)-336(a)-336(list)-360(of)-336(RCS)]TJ
/TT9 1 Tf
16.737 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-348(currently)]TJ
-17.2932 -1.188 TD
[(in)-264(the)-252(mirrored)-240(repository)-240(and)-252(SUP)-276(deletes)-252(one)-252(of)-264(those)]TJ
0 -1.2 TD
(RCS)Tj
/TT9 1 Tf
2.2141 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-312(before)-288(CVS)-312(has)-312(a)-300(chance)-288(to)-312(open)-288(it.)-492(In)-300(real-)]TJ
-2.7703 -1.2 TD
[(ity)-228(the)-216(odds)-216(of)-216(this)-228(happening)-192(are)-216(v)12(ery)-204(lo)24(w)-216(because)-216(RCS)]TJ
/TT9 1 Tf
0 -1.188 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-276(typically)-264(do)-252(not)-264(get)-276(remo)12(v)12(e)0(d)-240(from)-252(a)-264(repository)60(.)-348(O)0(f)]TJ
-0.5562 -1.2 TD
[(course)-192(when)-192(multiple)]TJ
/TT9 1 Tf
8.6849 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-204(are)-192(being)-192(updated)-180(on)-192(the)-204(mas-)]TJ
ET
endstream
endobj
24 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/TT2 4 0 R
/TT4 5 0 R
/TT8 7 0 R
/TT9 8 0 R
/TT12 25 0 R
>>
/ExtGState <<
/GS1 9 0 R
>>
>>
endobj
27 0 obj
<<
/Length 2370
>>
stream
0 0 0 RG
0 J 0 j 0.382 w 10 M []0 d
/GS1 gs
1 i 
86.17 695.945 436 -566.035 re
S
BT
/TT8 1 Tf
9.179 0 0 9.179 93.819 669.9382 Tm
0 0 0 rg
0 Tc
0 Tw
(#define LOCALROOT       "/cvs")Tj
0 -2.3333 TD
(/* remote hostname */)Tj
0 -1.1667 TD
(#define HOSTNAME        "anoncvs@anoncvs1.usa.openbsd.org")Tj
0 -2.3333 TD
(/* cvs root */)Tj
0 -1.1667 TD
(#define CVSROOT         __CONCAT3\(HOSTNAME,":",LOCALROOT\))Tj
0 -2.3333 TD
(/* default environment */)Tj
0 -1.1667 TD
(char * const env[] = {)Tj
T*
(    "PATH=/bin:/usr/bin", "SHELL=/bin/sh",)Tj
T*
(    __CONCAT\("CVSROOT=",LOCALROOT\),)Tj
T*
(    "HOME=/", "CVSREADONLYFS=1",)Tj
T*
(    NULL)Tj
T*
(};)Tj
0 -2.3333 TD
(int main\(argc, argv\))Tj
T*
(int argc;)Tj
0 -1.1667 TD
(char *argv[];)Tj
0 -2.3333 TD
({)Tj
0 -1.1667 TD
(    struct passwd *pw;)Tj
0 -2.3333 TD
(    pw = getpwuid\(getuid\(\)\);)Tj
0 -1.1667 TD
(    if \(pw == NULL || pw->pw_dir == NULL\) )Tj
T*
(        errx\(1, "no user/dir for uid 0", getuid\(\)\);)Tj
0 -2.3333 TD
(    setuid\(0\);)Tj
0 -1.1667 TD
(    if \(chroot\(pw->pw_dir\) == -1\) )Tj
T*
(        errx\(1, "chroot"\);)Tj
T*
(    chdir\("/"\);)Tj
T*
(    setuid\(pw->pw_uid\);)Tj
0 -2.3333 TD
(    /* program now "safe" in sandbox with root privs dropped */)Tj
0 -1.1667 TD
(    if \(argc != 3 || strcmp\("anoncvssh",  argv[0]\) != 0 ||)Tj
T*
(        strcmp\("-c", argv[1]\) != 0 || \(strcmp\("cvs server", argv[2]\) != 0 &&)Tj
T*
(          strcmp\(__CONCAT3\("cvs -d ",LOCALROOT," server"\), argv[2]\) != 0\)\) {)Tj
T*
(            fprintf\(stderr, "\\nTo use anonymous CVS install the latest "\);)Tj
T*
(            fprintf\(stderr,"version of CVS on your local machine.\\n"\);)Tj
T*
(            fprintf\(stderr,"Then set your CVSROOT environment variable "\);)Tj
T*
(            fprintf\(stderr,"to the following value:\\n"\);)Tj
T*
(            fprintf\(stderr,"\\t\\n\\n", CVSROOT\);)Tj
T*
(            sleep\(10\);)Tj
T*
(            exit\(0\);)Tj
T*
(    })Tj
T*
(    execle\("/usr/bin/cvs", "cvs", "server", NULL, env\);)Tj
T*
(    perror\("execle: cvs"\);)Tj
T*
(    fprintf\(stderr, "unable to exec CVS server!\\n"\);)Tj
T*
(    exit\(1\);)Tj
T*
(})Tj
0 59.5 TD
(/* location of CVS tree relative to anonymous CVS user’s home directory */)Tj
/TT4 1 Tf
10 0 0 10 206.16 107.1 Tm
0 g
[(Figure)-228(2:)-312(P)12(artial)-240(listing)-240(of)-240(anoncvs)-228(shell)-252(program)]TJ
ET
endstream
endobj
28 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/TT4 5 0 R
/TT8 7 0 R
>>
/ExtGState <<
/GS1 9 0 R
>>
>>
endobj
30 0 obj
<<
/Length 14101
>>
stream
BT
/TT4 1 Tf
10 0 0 10 72 709.98 Tm
0 g
/GS1 gs
0 Tc
0 Tw
[(ter)-252(CVS)-252(serv)12(er)-240(there)-240(is)-264(still)-264(a)-252(chance)-228(that)-252(an)-240(anon)12(ymous)]TJ
0 -1.2 TD
[(user)-348(will)-360(end)-348(up)-348(fetching)-336(some)-348(old)]TJ
/TT9 1 Tf
14.7666 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-360(and)-348(some)-348(ne)24(w)]TJ
/TT9 1 Tf
-15.3227 -1.188 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-288(from)-264(the)-276(group)-252(of)]TJ
/TT9 1 Tf
8.7984 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-288(being)-264(updated.)-372(Indeed,)-264(this)]TJ
-9.9107 -1.2 TD
[(is)-408(e)24(v)12(en)-372(a)-408(problem)-372(for)-384(normal)-372(CVS)-408(users)-396(because)-384(up-)]TJ
T*
[(dates)-360(are)-348(often)-336(check)12(ed)-336(in)-360(multiple)-348(chunks.)-612(Ho)24(we)24(v)12(e)0(r)36(,)]TJ
0 -1.188 TD
[(in)-240(practice)-228(we)-240(ha)24(v)12(e)-228(found)-216(that)-240(this)-240(problem)-216(does)-240(not)-228(oc-)]TJ
0 -1.2 TD
[(cur)-204(that)-204(often.)-276(In)-204(the)-204(future)-192(it)-216(may)-204(be)-204(useful)-204(to)-204(determine)]TJ
0 -1.188 TD
[(w)12(ays)-204(to)-204(e)12(xtend)-192(parts)-204(of)-192(CVS’)60(s)]TJ
/TT9 1 Tf
12.0709 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-216(locking)-180(to)-204(anon)12(ymous)]TJ
-12.627 -1.2 TD
[(serv)12(ers.)-504(It)-312(w)12(ould)-300(also)-312(be)-312(useful)-312(to)-312(create)-300(a)-324(mechanism)]TJ
T*
[(where)-300(CVS)-312(updates)-300(on)-300(the)-300(master)-300(serv)12(er)-300(are)-300(pushed)-288(to)]TJ
0 -1.188 TD
[(the)-240(sla)24(v)12(e)-252(anon)12(ymous)-204(serv)12(ers)-240(as)-252(soon)-228(as)-252(the)12(y)-228(happen.)]TJ
0.996 -1.416 TD
[(The)-360(third)-348(issue)-360(relating)-348(to)-360(CVS)-372(that)-360(caused)-348(us)-360(con-)]TJ
-0.996 -1.2 TD
[(cern)-432(w)12(a)0(s)-444(CVS’)60(s)-456(poor)-420(handling)-420(of)-432(netw)12(ork)]TJ
/TT9 1 Tf
18.3257 0 TD
(ß)Tj
/TT4 1 Tf
0.5562 0 TD
[(o)24(w)-432(con-)]TJ
-18.8819 -1.2 TD
[(trol.)-744(CVS’)60(s)-408(serv)12(er)-384(function)-372(w)12(a)0(s)-396(designed)-384(to)-384(run)-384(in)-396(a)]TJ
0 -1.188 TD
[(high-bandwidth)-312(netw)12(ork)-348(en)36(vironment)-324(with)-360(a)-360(relati)24(v)12(ely)]TJ
0 -1.2 TD
[(small)-252(source)-240(repository)60(.)-288(This)-240(en)36(vironment)-216(is)-252(fundamen-)]TJ
0 -1.188 TD
[(tality)-420(incompatible)-384(with)-420(our)-408(tar)12(get)-396(en)36(vironment.)-780(The)]TJ
0 -1.2 TD
[(OpenBSD)-216(source)-204(tree)-204(consists)-228(of)-204(250MB)-204(of)-216(source)]TJ
/TT9 1 Tf
20.3988 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(les,)Tj
-20.9549 -1.2 TD
[(and)-204(we)-228(distrib)24(ute)-204(it)-228(to)-216(man)12(y)-204(anon)12(ymous)-180(users)-216(connected)]TJ
0 -1.188 TD
[(to)-276(the)-276(Internet)-252(via)-276(slo)24(w)-276(speed)-264(PPP)-288(links.)-396(W)84(e)-276(found)-252(that)]TJ
0 -1.2 TD
[(CVS)-432(did)-420(not)-420(run)-420(well)-432(in)-420(this)-432(en)36(vironment)-384(because)-420(it)]TJ
T*
[(w)12(a)0(s)-360(designed)-324(to)-348(minimize)-336(the)-348(amount)-336(of)-336(time)-348(it)-360(holds)]TJ
0 -1.188 TD
[(a)-264(lock)-252(on)-252(a)-276(directory)-228(in)-264(a)-264(repository)60(.)-324(I)0(n)-264(order)-240(to)-264(do)-252(this,)]TJ
0 -1.2 TD
[(when)-372(checking)-372(out)-384(source)-372(code)-372(the)-384(CVS)-396(serv)12(er)-384(splits)]TJ
0 -1.188 TD
[(into)-396(tw)12(o)-408(processes.)-780(The)]TJ
/TT9 1 Tf
10.6604 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(rst)-420(process)-396(w)12(alks)-408(the)-408(CVS)]TJ
-11.2165 -1.2 TD
[(repository’)60(s)-348(directory)-348(tree)-372(as)-384(f)12(ast)-372(as)-372(possible)-372(perform-)]TJ
T*
[(ing)-240(the)-240(requested)-216(action.)-300(The)-228(second)-228(process)-240(b)24(u)0(f)24(fers)-228(the)]TJ
0 -1.188 TD
[(output)-264(from)-264(the)]TJ
/TT9 1 Tf
6.5252 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(rst)-288(process)-264(in)-288(its)-288(memory)-252(and)-276(sends)-276(it)]TJ
-7.0813 -1.2 TD
[(out)-360(o)12(v)12(e)0(r)-348(the)-372(netw)12(ork)-348(connection.)-636(The)-360(second)-360(process)]TJ
T*
[(uses)-228(non-blocking)-168(I/O)-216(to)-216(ensure)-216(that)-216(it)-216(does)-216(not)-216(block)-204(on)]TJ
0 -1.188 TD
[(a)-252(slo)24(w)-240(netw)12(ork)-228(connection.)-276(This)-240(allo)24(ws)-240(the)]TJ
/TT9 1 Tf
17.5134 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(rst)-252(process)]TJ
-18.0696 -1.2 TD
[(to)-348(run)-324(to)-348(completion)-324(without)-336(blocking)-312(on)-336(full)-348(netw)12(ork)]TJ
0 -1.188 TD
[(I/O)-324(b)24(u)0(f)24(fers)-324(while)-324(holding)-300(a)-336(lock)-324(on)-312(a)-336(repository)-300(direc-)]TJ
0 -1.2 TD
[(tory)60(.)-468(The)-288(problem)-288(with)-300(this)-312(design)-288(is)-312(that)-312(the)-300(CVS)-312(de-)]TJ
T*
[(v)12(elopers)-336(did)-336(not)-348(put)-348(a)-348(limit)-360(on)-336(the)-348(amount)-336(of)-348(data)-348(the)]TJ
0 -1.188 TD
[(second)-276(process)-288(w)12(a)0(s)-300(willing)-288(to)-288(b)24(u)0(f)24(fer)60(.)-420(The)-288(result)-288(of)-288(this)]TJ
0 -1.2 TD
[(is)-312(that)-312(for)-300(a)-300(lar)12(ge)-300(check)12(out)-288(o)12(v)12(e)0(r)-276(a)-312(slo)24(w)-312(link)-300(the)-300(second)]TJ
T*
[(process)-324(can)-336(gro)24(w)-324(and)-324(consume)-312(lar)12(ge)-324(chunks)-324(of)-324(virtual)]TJ
0 -1.188 TD
[(memory)60(.)-660(W)84(e)-384(found)-360(that)-372(if)-372(multiple)-360(Anon)12(ymous)-348(CVS)]TJ
0 -1.2 TD
[(serv)12(ers)-312(were)-324(running)-300(at)-336(the)-324(same)-324(time)-324(the)12(y)-324(quite)-312(often)]TJ
0 -1.188 TD
[(e)12(xhausted)-336(all)-360(a)24(v)24(ailable)-348(virtual)-348(memory)-336(on)-348(our)-348(Anon)12(y-)]TJ
0 -1.2 TD
[(mous)-252(CVS)-264(serv)12(er)-252(machine)-240(thus)-264(creating)-240(a)-264(denial)-252(of)-252(ser)24(-)]TJ
T*
[(vice.)-360(This)-276(problem)-240(w)12(a)0(s)-276(especially)-252(anno)12(ying)-240(since)-264(lock-)]TJ
0 -1.188 TD
[(ing)-240(is)-252(not)-240(an)-240(issue)-252(with)-240(a)-252(read-only)-216(CVS)-252(repository)60(.)]TJ
0.996 -1.416 TD
-0.084 Tc
(To)Tj
/TT9 1 Tf
1.4348 0 TD
0 Tc
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(x)-396(this)-408(problem,)-420(we)-408(modi)]TJ
/TT9 1 Tf
10.381 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(ed)-384(CVS)-420(to)-408(limit)-408(the)]TJ
-13.9242 -1.2 TD
[(amount)-360(of)-372(data)-372(the)-372(second)-360(process)-372(can)-372(b)24(u)0(f)24(fer)60(.)-672(I)0(n)-372(our)]TJ
T*
[(en)36(vironment)-192(it)-240(is)-240(better)-228(to)-240(let)-240(the)]TJ
/TT9 1 Tf
13.1243 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(rst)-240(process)-228(block)-216(than)]TJ
-13.6804 -1.188 TD
[(to)-336(run)-324(our)-336(serv)12(er)-324(out)-336(of)-324(virtual)-336(memory)60(.)-552(P)12(artly)-336(due)-324(to)]TJ
0 -1.2 TD
[(our)-288(complaints)-288(about)-300(the)-300(beha)24(vior)-276(of)-300(CVS)-312(in)-312(this)-300(case,)]TJ
0 -1.188 TD
[(the)-372(maintainers)-360(of)-360(CVS)-384(modi)]TJ
/TT9 1 Tf
12.1967 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(ed)-360(it)-372(to)-372(address)-372(this)-372(is-)]TJ
-12.7529 -1.2 TD
[(sue.)-444(Their)]TJ
/TT9 1 Tf
4.4805 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(x)-288(w)12(as)-300(to)-300(modify)-264(the)]TJ
/TT9 1 Tf
8.3834 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(rst)-300(process)-276(in)-300(a)-300(CVS)]TJ
-13.9762 -1.2 TD
[(check)12(out)-228(to)-252(be)-252(non-blocking)-204(only)-240(on)-240(a)-252(per)24(-directory)-216(ba-)]TJ
0 -1.188 TD
[(sis.)-636(This)-348(allo)24(ws)-360(the)-348(second)-336(process)-348(to)-348(catch)-348(up)-336(to)-360(the)]TJ
/TT9 1 Tf
0 -1.2 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(rst)-372(after)-360(the)]TJ
/TT9 1 Tf
5.1572 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(rst)-372(has)-372(completed)-336(a)-372(directory)60(.)-648(The)-360(ad-)]TJ
17.8505 63.804 TD
[(v)24(antage)-312(of)-324(this)]TJ
/TT9 1 Tf
6.3352 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(x)-336(i)0(s)-336(that)-336(it)-336(minimizes)-324(the)-324(time)-336(a)-336(CVS)]TJ
-6.8914 -1.2 TD
[(directory)-336(lock)-360(can)-348(be)-360(held.)-648(There)-348(is)-372(still)-372(potential)-348(for)]TJ
0 -1.188 TD
[(problems)-360(if)-396(CVS)-396(encounters)-360(a)-384(single)-384(directory)-360(with)-384(a)]TJ
0 -1.2 TD
[(lar)12(ge)-216(number)-204(of)-216(modi)]TJ
/TT9 1 Tf
8.5659 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(ed)Tj
/TT9 1 Tf
1.1479 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les.)-312(In)-216(this)-228(case)-228(it)-240(is)-228(still)-240(pos-)]TJ
-10.826 -1.2 TD
[(sible)-336(for)-324(the)-324(CVS)-336(serv)12(er)-324(to)-324(use)-336(a)-336(signi)]TJ
/TT9 1 Tf
15.7921 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cant)-324(chunks)-312(of)]TJ
-16.3482 -1.188 TD
[(system)-216(virtual)-204(memory)60(.)-264(H)0(o)24(w)0(e)24(v)12(er)36(,)-192(a)0(s)-228(most)-216(source)]TJ
/TT9 1 Tf
19.6414 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-216(in)]TJ
-20.1976 -1.2 TD
[(lar)12(ge)-300(sources)-300(trees)-312(are)-300(distrib)24(uted)-300(among)-288(se)24(v)12(eral)-300(direc-)]TJ
0 -1.188 TD
[(tories)-240(this)-252(should)-228(not)-240(be)-240(a)-252(problem.)]TJ
0.996 -1.296 TD
[(One)-228(remaining)-216(unsolv)12(ed)-204(issue)-240(is)-240(the)-240(f)12(act)-228(that)-240(CVS)-240(re-)]TJ
-0.996 -1.2 TD
[(quires)-360(a)-372(writable)]TJ
/TT8 1 Tf
7.2561 0 TD
(/tmp)Tj
/TT4 1 Tf
2.7604 0 TD
[(directory)-336(in)-372(order)-348(to)-372(function.)]TJ
-10.0165 -1.2 TD
[(F)12(o)0(r)-420(better)-420(security)-420(we)-420(w)12(ould)-420(lik)12(e)-420(for)-420(an)-420(Anon)12(ymous)]TJ
0 -1.188 TD
[(CVS)-276(serv)12(er)-264(to)-276(be)-264(able)-264(to)-276(function)-252(without)-252(an)12(y)-264(write)-276(ac-)]TJ
0 -1.2 TD
[(cess)-408(to)-408(the)]TJ
/TT9 1 Tf
4.8895 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(lesystem)-408(in)-396(the)]TJ
/TT8 1 Tf
6.711 0 TD
(chroot)Tj
/TT4 1 Tf
3.9966 0 TD
[(en)36(vironment)-360(in)]TJ
-16.1533 -1.188 TD
[(which)-240(it)-252(operates.)]TJ
/TT2 1 Tf
12 0 0 12 313.2 518.46 Tm
[(4)-990(Other)-480(CVS-based)-480(Distrib)20(ution)-470(Mecha-)]TJ
1.49 -1.16 TD
(nisms)Tj
/TT4 1 Tf
10 0 0 10 313.2 480.42 Tm
[(As)-732(open)-720(source)-708(repository)-708(projects)-720(became)-708(more)]TJ
0 -1.2 TD
[(widespread,)-252(se)24(v)12(eral)-252(ne)24(w)-264(tools)-264(including)-240(CVS’)60(s)-288(Pserv)12(er)36(,)]TJ
0 -1.188 TD
[(CVSW)84(eb,)-228(and)-204(CVSup)-216(were)-204(de)24(v)12(eloped)-180(to)-216(tak)12(e)-216(adv)24(antage)]TJ
0 -1.2 TD
[(of)-240(this)-252(po)24(werful)-216(ne)24(w)-240(e)0(n)36(vironment.)]TJ
0.996 -1.296 TD
[(CVS’)60(s)-312(Pserv)12(er)-276(w)12(a)0(s)-300(created)-276(by)-288(the)-288(CVS)-300(de)24(v)12(elopment)]TJ
-0.996 -1.2 TD
[(team)-360(partly)-348(in)-360(response)-336(to)-360(the)-360(demand)-336(for)-348(anon)12(ymous)]TJ
0 -1.188 TD
[(support)-396(within)-408(CVS)-420(itself.)-828(Rather)-408(than)-408(use)-408(the)-420(stan-)]TJ
0 -1.2 TD
[(dard)-240(CVS)-252(serv)12(er)-240(with)-252(the)-240(anoncvs)-228(shell)-252(that)-252(we)-252(created,)]TJ
0 -1.188 TD
[(CVS’)60(s)-360(Pserv)12(er)-336(bypasses)-348(rsh/ssh)-348(and)-336(listens)-360(on)-336(its)-360(o)24(w)0(n)]TJ
0 -1.2 TD
[(TCP)-372(port)-348(for)-348(connections.)-624(Pserv)12(er’)60(s)-348(user)-360(interf)12(ace)-348(re-)]TJ
T*
[(quires)-264(the)-264(use)-276(of)-264(a)-264(login)-264(and)-264(passw)12(ord)-252(\(e)24(v)12(e)0(n)-252(for)-264(anon)12(y-)]TJ
0 -1.188 TD
[(mous)-240(access)-252(–)-252(a)0(n)-240(anno)12(ying)-216(incon)36(v)12(enience)-204(for)-240(users)-252(get-)]TJ
0 -1.2 TD
[(ting)-228(started)-228(with)-228(Anon)12(ymous)-192(CVS\),)-240(and)-216(it)-240(transmits)-228(this)]TJ
T*
[(data)-312(o)12(v)12(e)0(r)-288(the)-312(wire)-312(in)-312(clear)24(-te)12(xt.)-504(Pserv)12(er)-300(often)-300(does)-312(not)]TJ
0 -1.188 TD
[(operate)-192(in)-216(a)]TJ
/TT8 1 Tf
4.7761 0 TD
(chroot)Tj
/TT4 1 Tf
3.8046 0 TD
[(en)36(vironment,)-168(and)-204(thus)-204(it)-216(is)-216(more)-204(of)]TJ
-8.5806 -1.2 TD
[(a)-216(security)-192(risk)-204(than)-204(our)-192(v)12(ersion)-192(of)-204(Anon)12(ymous)-168(CVS.)-216(It)-216(is)]TJ
0 -1.188 TD
[(possible)-228(to)-228(run)-216(Pserv)12(er)-228(in)-228(a)]TJ
/TT8 1 Tf
10.9534 0 TD
(chroot)Tj
/TT4 1 Tf
3.8286 0 TD
[(en)36(vironment,)-192(b)24(u)0(t)-228(i)0(t)]TJ
-14.782 -1.2 TD
[(requires)-276(more)]TJ
/TT9 1 Tf
5.8274 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-300(to)-300(be)-288(added)-264(to)-300(the)-288(sandbox)-264(en)36(viron-)]TJ
-6.3835 -1.2 TD
[(ment)-264(in)-276(order)-264(for)-264(Pserv)12(er)-264(to)-288(authenticate)-252(the)-276(user)36(,)-276(espe-)]TJ
0 -1.188 TD
[(cially)-276(on)-264(systems)-288(that)-276(support)-252(comple)12(x)-252(user)-276(authentica-)]TJ
0 -1.2 TD
[(tion)-276(mechanisms)-276(lik)12(e)-288(P)96(AM)-300([3)12(].)-420(Pserv)12(er)36(,)-288(unlik)12(e)-276(Anon)12(y-)]TJ
T*
[(mous)-348(CVS,)-360(also)-348(does)-348(not)-348(fully)-348(gi)24(v)12(e)-336(up)-348(root)-348(pri)24(vile)12(ges)]TJ
0 -1.188 TD
[(if)-300(it)-300(has)-300(them.)-456(In)-288(the)-300(conte)12(xt)-276(of)-300(anon)12(ymous)-252(access,)-324(the)]TJ
0 -1.2 TD
[(main)-264(adv)24(antage)-240(of)-264(Pserv)12(er)-252(is)-276(that)-264(it)-276(is)-276(included)-240(with)-276(the)]TJ
0 -1.188 TD
[(main)-240(CVS)-252(distrib)24(ution.)]TJ
0.996 -1.296 TD
[(The)-336(CVSW)84(eb)-348(system)-348(w)12(a)0(s)-348(d)0(e)24(v)12(eloped)-300(by)-336(Bill)-348(Fenner)]TJ
-0.996 -1.2 TD
[(of)-360(the)-360(FreeBSD)-360(project)-348(to)-372(allo)24(w)-360(anon)12(ymous)-324(access)-360(to)]TJ
T*
[(a)-336(CVS)-348(repository)-312(through)-312(a)-336(standard)-324(web)-336(bro)24(wser)-312([2].)]TJ
0 -1.188 TD
[(Although)-432(CVSW)84(eb)-468(cannot)-444(be)-456(used)-456(in)-456(the)-456(same)-468(w)12(a)0(y)]TJ
0 -1.2 TD
[(as)-372(Anon)12(ymous)-324(CVS)-372(to)-360(update)-348(a)-360(local)-360(source)-348(tree,)-396(the)]TJ
0 -1.188 TD
[(big)-276(adv)24(antage)-252(of)-264(CVSW)84(eb)-288(is)-288(that)-276(it)-288(allo)24(ws)-276(an)12(yone)-252(with)]TJ
0 -1.2 TD
[(a)-372(web)-360(bro)24(wser)-360(to)-360(easily)-372(bro)24(wse)-360(the)-360(content)-348(of)-372(a)-372(CVS)]TJ
T*
[(repository)-240(using)-264(a)-264(graphical)-252(user)-264(interf)12(ace.)-348(This)-264(can)-264(of-)]TJ
0 -1.188 TD
[(ten)-252(be)-240(more)-240(con)36(v)12(enient)-216(than)-240(using)-240(the)-252(standard)-228(CVS)-264(in-)]TJ
0 -1.2 TD
[(terf)12(ace.)]TJ
ET
endstream
endobj
31 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/TT2 4 0 R
/TT4 5 0 R
/TT8 7 0 R
/TT9 8 0 R
>>
/ExtGState <<
/GS1 9 0 R
>>
>>
endobj
33 0 obj
<<
/Length 14649
>>
stream
0 g
/GS1 gs
q
410.76 0 0 -0.48 98.868 720.048 cm
/Im1 Do
Q
q
0.48 0 0 -12 98.628 719.568 cm
/Im1 Do
Q
BT
/TT2 1 Tf
10 0 0 10 104.76 711.1801 Tm
0 Tc
0 Tw
[(T)96(ool)]TJ
ET
q
0.48 0 0 -12 204.468 719.568 cm
/Im1 Do
Q
BT
10 0 0 10 210.7282 711.1801 Tm
(Location)Tj
ET
q
0.48 0 0 -12 509.388 719.568 cm
/Im1 Do
Q
q
410.76 0 0 -0.48 98.868 707.688 cm
/Im1 Do
Q
q
0.48 0 0 -12 98.628 707.208 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 104.76 698.8201 Tm
(SUP)Tj
ET
q
0.48 0 0 -12 204.468 707.208 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 210.8247 698.8201 Tm
[(ftp://ftp.openbsd.org/pub/OpenBSD/)12(src/u)12(sr.bin)12(/sup)]TJ
ET
q
0.48 0 0 -12 509.388 707.208 cm
/Im1 Do
Q
q
410.76 0 0 -0.48 98.868 695.328 cm
/Im1 Do
Q
q
0.48 0 0 -12 98.628 694.848 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 104.76 686.4601 Tm
(Rsync)Tj
ET
q
0.48 0 0 -12 204.468 694.848 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 210.76 686.4601 Tm
(http://samba.anu.edu.au/rsync/)Tj
ET
q
0.48 0 0 -12 509.388 694.848 cm
/Im1 Do
Q
q
410.76 0 0 -0.48 98.868 682.968 cm
/Im1 Do
Q
q
0.48 0 0 -12 98.628 682.488 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 104.76 674.1 Tm
(CTM)Tj
ET
q
0.48 0 0 -12 204.468 682.488 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 210.7899 674.1 Tm
[(http://www.freebsd.org/handbook/sy)12(nchin)12(g.html)12(#CTM)]TJ
ET
q
0.48 0 0 -12 509.388 682.488 cm
/Im1 Do
Q
q
410.76 0 0 -0.48 98.868 670.608 cm
/Im1 Do
Q
q
0.48 0 0 -12 98.628 670.1281 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 104.76 661.7401 Tm
[(CVS)-264(\(includes)-228(Pserv)12(er\))]TJ
ET
q
0.48 0 0 -12 204.468 670.1281 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 210.7487 661.7401 Tm
(ftp://ftp.gnu.org/gnu/cvs)Tj
ET
q
0.48 0 0 -12 509.388 670.1281 cm
/Im1 Do
Q
q
410.76 0 0 -0.48 98.868 658.248 cm
/Im1 Do
Q
q
0.48 0 0 -12 98.628 657.768 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 104.76 649.38 Tm
[(Anon)12(ymous)-216(CVS)]TJ
ET
q
0.48 0 0 -12 204.468 657.768 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 210.6647 649.38 Tm
[(http://www.openbsd.org/anoncvs.sha)12(r)]TJ
ET
q
0.48 0 0 -12 509.388 657.768 cm
/Im1 Do
Q
q
410.76 0 0 -0.48 98.868 645.888 cm
/Im1 Do
Q
q
0.48 0 0 -12 98.628 645.408 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 104.76 637.02 Tm
[(CVSW)84(eb)]TJ
ET
q
0.48 0 0 -12 204.468 645.408 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 210.8901 637.02 Tm
[(http://www.freebsd.org/˜fenner/cvs)12(web/)]TJ
ET
q
0.48 0 0 -12 509.388 645.408 cm
/Im1 Do
Q
q
410.76 0 0 -0.48 98.868 633.528 cm
/Im1 Do
Q
q
0.48 0 0 -12 98.628 633.048 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 104.76 624.66 Tm
(CVSup)Tj
ET
q
0.48 0 0 -12 204.468 633.048 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 210.7731 624.66 Tm
[(http://www.polstra.com/projects/fr)12(eewar)12(e/CVSu)12(p/)]TJ
ET
q
0.48 0 0 -12 509.388 633.048 cm
/Im1 Do
Q
q
410.76 0 0 -0.48 98.868 621.168 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 237.72 602.9401 Tm
[(T)84(able)-240(1:)-300(Source)-240(distrib)24(ution)-228(tools)]TJ
ET
q
423.24 0 0 -0.48 92.628 580.968 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 580.608 cm
/Im1 Do
Q
BT
/TT2 1 Tf
10 0 0 10 98.52 572.1 Tm
[(Pr)12(oject)]TJ
ET
q
0.48 0 0 -12 186.828 580.608 cm
/Im1 Do
Q
BT
10 0 0 10 192.844 572.1 Tm
[(Inf)24(ormation)-240(P)24(ointer)]TJ
ET
q
0.48 0 0 -12 515.628 580.608 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 568.608 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 568.248 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 559.86 Tm
[(CMU)-252(Common)-228(Lisp)]TJ
ET
q
0.48 0 0 -12 186.828 568.248 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.9881 559.86 Tm
(http://www3.cons.org/cmucl/)Tj
ET
q
0.48 0 0 -12 515.628 568.248 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 556.248 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 555.8881 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 547.5 Tm
(Ecgs)Tj
ET
q
0.48 0 0 -12 186.828 555.8881 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.9585 547.5 Tm
(http://egcs.cygnus.com/cvs.html)Tj
ET
q
0.48 0 0 -12 515.628 555.8881 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 543.888 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 543.528 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 535.14 Tm
(FreeBSD)Tj
ET
q
0.48 0 0 -12 186.828 543.528 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 193.1017 535.14 Tm
[(http://www.freebsd.org/handbook/synchi)12(ng.ht)12(ml#AN)12(ONCVS)]TJ
ET
q
0.48 0 0 -12 515.628 543.528 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 531.528 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 531.168 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 522.78 Tm
(Gnome)Tj
ET
q
0.48 0 0 -12 186.828 531.168 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.8785 522.78 Tm
[(http://www.tw.gnome.org/software/anonc)12(vs.sh)12(tml)]TJ
ET
q
0.48 0 0 -12 515.628 531.168 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 519.168 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 518.808 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 510.42 Tm
(GNUstep)Tj
ET
q
0.48 0 0 -12 186.828 518.808 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 193.0534 510.42 Tm
[(http://www.gnustep.org/resources/Anonc)12(vs.tx)12(t)]TJ
ET
q
0.48 0 0 -12 515.628 518.808 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 506.928 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 506.448 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 498.06 Tm
(Guile)Tj
ET
q
0.48 0 0 -12 186.828 506.448 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.9768 498.06 Tm
[(http://www.red-bean.com/guile/guile-an)12(on-cv)12(s.htm)12(l)]TJ
ET
q
0.48 0 0 -12 515.628 506.448 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 494.5681 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 494.088 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 485.7 Tm
(Mozilla)Tj
ET
q
0.48 0 0 -12 186.828 494.088 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.9835 485.7 Tm
(http://www.mozilla.org/cvs.html)Tj
ET
q
0.48 0 0 -12 515.628 494.088 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 482.208 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 481.728 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 473.34 Tm
(Obtuse)Tj
ET
q
0.48 0 0 -12 186.828 481.728 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.9701 473.34 Tm
(http://www.obtuse.com/open)Tj
ET
q
3 0 0 -0.48 349.548 473.808 cm
/Im1 Do
Q
BT
10 0 0 10 351.9955 473.34 Tm
(source/)Tj
ET
q
0.48 0 0 -12 515.628 481.728 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 469.8481 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 469.368 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 460.98 Tm
(OpenBSD)Tj
ET
q
0.48 0 0 -12 186.828 469.368 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 193.0333 460.98 Tm
(http://www.openbsd.org/anoncvs.html)Tj
ET
q
0.48 0 0 -12 515.628 469.368 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 457.488 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 457.008 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 448.62 Tm
[(OpenLD)36(AP)]TJ
ET
q
0.48 0 0 -12 186.828 457.008 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.9734 448.62 Tm
[(http://www.openldap.org/software/repo.)12(html)]TJ
ET
q
0.48 0 0 -12 515.628 457.008 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 445.1281 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 444.648 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 436.26 Tm
(Python)Tj
ET
q
0.48 0 0 -12 186.828 444.648 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.8598 436.26 Tm
[(http://www.python.org/download/cvs.htm)12(l)]TJ
ET
q
0.48 0 0 -12 515.628 444.648 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 432.768 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 432.288 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 423.9 Tm
[(Quinn)-240(Dif)24(f)]TJ
ET
q
0.48 0 0 -12 186.828 432.288 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.8602 423.9 Tm
[(http://quinn-diff.nocrew.org/anoncvs.h)12(tml)]TJ
ET
q
0.48 0 0 -12 515.628 432.288 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 420.4081 cm
/Im1 Do
Q
q
0.48 0 0 -12 92.388 419.928 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 98.52 411.54 Tm
(Sudo)Tj
ET
q
0.48 0 0 -12 186.828 419.928 cm
/Im1 Do
Q
BT
/TT8 1 Tf
10 0 0 10 192.8815 411.54 Tm
[(http://www.courtesan.com/sudo/anoncvs.)12(html)]TJ
ET
q
0.48 0 0 -12 515.628 419.928 cm
/Im1 Do
Q
q
423.24 0 0 -0.48 92.628 408.048 cm
/Im1 Do
Q
BT
/TT4 1 Tf
10 0 0 10 192.84 389.82 Tm
[(T)84(able)-240(2:)-300(Open)-240(source)-228(repository)-228(projects)-228(on)-240(the)-240(Internet)]TJ
-11.088 -4.2 TD
[(The)-288(current)-276(state)-300(of)-288(the)-288(art)-288(in)-300(open)-276(source)-276(repository)]TJ
-0.996 -1.2 TD
[(source)-276(distrib)24(ution)-276(tools)-300(is)-300(John)-288(Polstra’)60(s)-288(CVSup)-300(pack-)]TJ
0 -1.188 TD
[(age)-276([6)12(].)-420(CVSup)-276(is)-288(an)-276(ef)]TJ
/TT9 1 Tf
9.6367 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cient)-276(and)]TJ
/TT9 1 Tf
3.9392 0 TD
(ß)Tj
/TT4 1 Tf
0.5562 0 TD
[(e)12(xible)]TJ
/TT9 1 Tf
2.6954 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-288(distrib)24(u-)]TJ
-17.9397 -1.2 TD
[(tion)-324(system.)-576(CVSup’)60(s)-336(e)0(f)]TJ
/TT9 1 Tf
10.1798 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cienc)12(y)-324(i)0(s)-336(due)-324(to)-336(tw)12(o)-336(f)12(actors.)]TJ
-10.736 -1.2 TD
[(First,)-276(the)-276(control)-252(protocol)-240(used)-264(by)-264(CVSup)-276(streams)-264(mul-)]TJ
0 -1.188 TD
[(tiple)-216(requests)-216(between)-216(client)-216(and)-216(serv)12(er)-204(rather)-216(than)-204(mak-)]TJ
0 -1.2 TD
[(ing)-384(the)-384(client)-384(w)12(ait)-384(for)-384(a)-384(request)-372(to)-384(be)-384(satis)]TJ
/TT9 1 Tf
17.8715 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(ed)-396(before)]TJ
-18.4276 -1.188 TD
[(issuing)-360(the)-372(ne)12(xt)-348(request.)-660(This)-372(helps)-360(CVSup)-372(mak)12(e)-360(the)]TJ
0 -1.2 TD
[(most)-312(of)-324(a)24(v)24(ailable)-312(netw)12(ork)-300(bandwidth.)-504(Second,)-324(CVSup)]TJ
T*
[(tak)12(es)-264(adv)24(antage)-240(of)-252(kno)24(wledge)-228(of)-264(the)-252(internal)-252(formats)-252(of)]TJ
0 -1.188 TD
[(certain)-300(types)-300(of)]TJ
/TT9 1 Tf
6.5761 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-312(to)-312(reduce)-288(the)-312(o)12(v)12(erhead)-264(of)-312(sending)]TJ
-7.1322 -1.2 TD
[(an)-264(update.)-348(CVSup)-264(kno)24(ws)-252(the)-264(format)-252(of)-252(RCS)]TJ
/TT9 1 Tf
18.1744 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les,)-288(CVS)]TJ
-18.7305 -1.2 TD
[(repositories,)-276(and)-276(append-only)-240(log)]TJ
/TT9 1 Tf
13.7037 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les.)-432(CVSup)-288(can)-276(use)]TJ
-14.2599 -1.188 TD
[(this)-300(kno)24(wledge)-264(to)-288(easily)-300(e)12(xtract)-276(the)-288(minimal)-288(amount)-276(of)]TJ
0 -1.2 TD
[(data)-264(necessary)-240(to)-264(send)-264(changes)-240(from)-252(these)-264(types)-252(of)]TJ
/TT9 1 Tf
20.6302 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(les)Tj
-21.1863 -1.188 TD
[(o)12(v)12(e)0(r)-204(the)-228(netw)12(ork)-204(\(the)-216(data)-216(can)-228(optionally)-204(be)-216(compressed)]TJ
0 -1.2 TD
[(before)-324(being)-324(transmitted\).)-564(F)12(o)0(r)]TJ
/TT9 1 Tf
12.7826 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-348(whose)-324(format)-324(CV)96(-)]TJ
-13.3387 -1.2 TD
[(Sup)-324(does)-312(not)-312(understand,)-324(CVSup)-312(uses)-336(the)-312(Rsync)-324(algo-)]TJ
0 -1.188 TD
[(rithm.)-516(CVSup)-324(includes)-312(both)-300(a)-324(command)-300(line)-324(and)-300(GUI)]TJ
0 -1.2 TD
[(interf)12(ace.)]TJ
0.996 -1.284 TD
[(CVSup)-264(has)-264(tw)12(o)-264(features)-252(that)-252(are)-264(especially)-252(useful)-252(for)]TJ
-0.996 -1.2 TD
[(accessing)-204(CVS)-216(repositories.)-264(First,)-228(the)-204(CVSup)-204(client)-204(pro-)]TJ
0 -1.188 TD
[(gram)-180(can)-192(be)-192(used)-192(to)-192(request)-192(a)-192(speci)]TJ
/TT9 1 Tf
13.7153 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(c)-192(v)12(ersion)-180(of)-192(a)-192(source)]TJ
-14.2715 -1.2 TD
[(tree.)-288(The)-192(v)12(ersion)-180(can)-192(be)-192(speci)]TJ
/TT9 1 Tf
11.6653 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(ed)-192(by)-192(date)-192(or)-192(by)-192(symbolic)]TJ
11.8985 27.588 TD
[(name.)-276(Second,)-192(CVSup)-204(can)-204(be)-192(used)-204(to)-204(do)24(wnload)-180(changes)]TJ
0 -1.2 TD
[(from)-276(a)-288(master)-288(CVS)-300(repository)-276(and)-276(mer)12(ge)-276(them)-276(directly)]TJ
0 -1.188 TD
[(into)-384(a)-396(local)-396(CVS)-408(repository)]TJ
7 0 0 7 428.52 327.54 Tm
(2)Tj
10 0 0 10 432.12 323.94 Tm
[(.)-756(This)-396(allo)24(ws)-396(de)24(v)12(elopers)]TJ
-11.892 -1.2 TD
[(to)-324(maintain)-324(their)-324(local)-324(changes)-312(within)-324(a)-336(pri)24(v)24(ate)-312(branch)]TJ
T*
[(of)-384(their)-396(cop)12(y)-372(o)0(f)-396(the)-384(master)-396(CVS)-408(repository)60(.)-708(I)0(n)-396(order)]TJ
0 -1.188 TD
[(to)-324(achie)24(v)12(e)-312(the)-324(same)-324(ef)24(fect)-312(with)-336(traditional)-300(Anon)12(ymous)]TJ
0 -1.2 TD
[(CVS,)-372(one)-348(w)12(ould)-348(ha)24(v)12(e)-348(go)-348(through)-336(the)-360(time)-360(consuming)]TJ
0 -1.188 TD
[(process)-372(of)-372(checking)-360(out)-372(a)-384(clean)-384(v)12(ersion)-360(of)-372(the)-384(master)]TJ
0 -1.2 TD
[(source)-228(tree)-228(\(via)-228(Anon)12(ymous)-204(CVS\))-240(and)-216(then)-228(importing)-216(it)]TJ
T*
[(into)-312(the)-312(v)12(endor)-288(branch)-300(of)-312(a)-324(local)-312(CVS)-324(repository)60(.)-492(C)0(V)96(-)]TJ
0 -1.188 TD
[(Sup)-240(can)-240(do)-240(the)-240(same)-240(job)-240(with)-240(much)-240(less)-252(o)12(v)12(erhead.)]TJ
0.996 -1.2 TD
[(There)-276(are)-288(tw)12(o)-300(dra)12(wbacks)-264(to)-300(CVSup.)-432(First,)-312(it)-300(is)-300(dif)]TJ
/TT9 1 Tf
20.4428 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
(-)Tj
-21.9949 -1.2 TD
[(cult)-276(to)-276(compile)-252(and)-264(install)-276(because)-264(it)-288(is)-276(written)-276(in)-276(Mod-)]TJ
0 -1.188 TD
[(ula3)-192(rather)-192(than)-204(C.)-204(While)-204(there)-204(are)-192(open)-192(source)-192(Modula3)]TJ
0 -1.2 TD
[(en)36(vironments)-348(a)24(v)24(ailable,)-396(compiling)-360(and)-372(installing)-372(them)]TJ
0 -1.188 TD
[(is)-240(a)-240(dif)]TJ
/TT9 1 Tf
2.6777 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cult)-228(task)-240(\(especially)-216(for)-228(unsupported)-192(platforms\).)]TJ
-3.2338 -1.2 TD
[(Ho)24(we)24(v)12(e)0(r)36(,)-252(there)-276(are)-276(precompiled)-240(binaries)-264(a)24(v)24(ailable)-276(from)]TJ
T*
[(the)-288(PostgreSQL)-276(project)]TJ
7 0 0 7 407.76 148.14 Tm
(3)Tj
10 0 0 10 411.6 144.54 Tm
[(.)-432(The)-288(second)-276(dra)12(wback)-264(of)-276(CV)96(-)]TJ
-9.84 -1.188 TD
[(Sup)-384(is)-384(that)-384(it)-396(can)-384(only)-372(access)-384(a)-396(set)-384(of)-384(pre-determined)]TJ
0 -1.2 TD
[(collections)-312(of)]TJ
/TT9 1 Tf
5.801 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les,)-348(while)-324(Anon)12(ymous)-288(CVS)-336(can)-324(access)]TJ
-6.3572 -1.2 TD
[(an)12(ywhere)-396(from)-408(a)-420(single)]TJ
/TT9 1 Tf
10.2951 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(le)-420(to)-420(the)-420(entire)-420(source)-408(tree.)]TJ
ET
q
89.28 0 0 -0.48 313.188 101.088 cm
/Im1 Do
Q
BT
6 0 0 6 324 93.9 Tm
(2)Tj
8 0 0 8 327.6 91.14 Tm
[(Care)-270(must)-270(be)-270(tak)15(en)-285(to)-270(a)15(v)15(oid)-270(v)15(ersion)-285(number)-285(con)]TJ
/TT9 1 Tf
19.5288 0 TD
(ß)Tj
/TT4 1 Tf
0.5562 0 TD
[(icts)-285(and)-270(deleted)]TJ
-21.8849 -1.185 TD
(RCS)Tj
/TT9 1 Tf
2.1451 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les,)-255(see)-255(the)-270(CVSup)-255(F)75(A)60(Q)-255(for)-255(details.)]TJ
6 0 0 6 324 74.7 Tm
(3)Tj
8 0 0 8 327.6 71.94 Tm
(See)Tj
/TT8 1 Tf
1.6988 0 TD
(/pub/CVSup)Tj
/TT4 1 Tf
6.226 0 TD
(on)Tj
/TT8 1 Tf
1.255 0 TD
(ftp.postgresql.org)Tj
ET
endstream
endobj
34 0 obj
<<
/ProcSet [/PDF /Text /ImageB ]
/Font <<
/TT2 4 0 R
/TT4 5 0 R
/TT8 7 0 R
/TT9 8 0 R
>>
/XObject <<
/Im1 21 0 R
>>
/ExtGState <<
/GS1 9 0 R
>>
>>
endobj
36 0 obj
<<
/Length 6836
>>
stream
BT
/TT4 1 Tf
10 0 0 10 72 709.98 Tm
0 g
/GS1 gs
0 Tc
0 Tw
[(Ho)24(we)24(v)12(e)0(r)36(,)-324(if)-336(CVSup)-336(is)-336(used)-324(to)-336(do)24(wnload)-312(a)-336(cop)12(y)-312(o)0(f)-336(the)]TJ
0 -1.2 TD
[(entire)-228(repository)60(,)-204(then)-228(standard)-216(CVS)-252(can)-228(be)-228(used)-228(on)-228(that)]TJ
0 -1.188 TD
[(repository)-216(to)-252(access)-252(indi)24(vidual)]TJ
/TT9 1 Tf
12.3534 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(les)-252(in)-240(that)-252(repository)60(.)]TJ
/TT2 1 Tf
12 0 0 12 72 655.26 Tm
[(5)-990(Conclusions)]TJ
/TT4 1 Tf
10 0 0 10 72 632.58 Tm
[(In)-252(this)-264(paper)-240(we)-264(ha)24(v)12(e)-240(e)12(xamined)-240(the)-252(issue)-264(of)-252(distrib)24(uting)]TJ
0 -1.188 TD
[(the)-192(source)-180(code)-180(of)-192(open)-180(source)-180(projects)-180(to)-192(Internet)-180(de)24(v)12(el-)]TJ
0 -1.2 TD
[(opers.)-276(T)84(able)-180(1)-192(contains)-180(a)-192(list)-192(of)-192(the)-180(tools)-192(discussed)-180(in)-192(this)]TJ
T*
[(paper)-276(and)-288(pointers)-288(to)-288(where)-288(to)-288(get)-300(them.)-444(W)84(e)-300(e)12(xamined)]TJ
0 -1.188 TD
[(the)-192(e)24(v)24(olution)-180(of)-204(open)-180(source)-192(code)-180(distrib)24(ution)-192(from)-180(early)]TJ
0 -1.2 TD
[(channels)-204(such)-204(as)-216(USENET)-216(and)-204(anon)12(ymous)-180(FTP)-216(to)-216(mod-)]TJ
T*
[(ern)-396(mechanisms)-384(such)-396(as)-408(Anon)12(ymous)-372(CVS,)-408(CVSW)84(eb,)]TJ
0 -1.188 TD
[(and)-216(CVSup.)-288(Our)-216(contrib)24(ution)-204(w)12(a)0(s)-228(the)-228(design)-204(and)-216(imple-)]TJ
0 -1.2 TD
[(mentation)-168(of)-180(Anon)12(ymous)-144(CVS.)-192(Since)-192(the)-180(introduction)-156(of)]TJ
0 -1.188 TD
[(OpenBSD’)60(s)-288(Anon)12(ymous)-252(CVS)-300(service)-288(man)12(y)-276(other)-276(open)]TJ
0 -1.2 TD
[(source)-300(projects)-300(ha)24(v)12(e)-288(opened)-288(up)-300(their)-300(CVS)-324(repositories.)]TJ
T*
[(T)84(able)-444(2)-456(contains)-432(URLs)-456(for)-444(some)-444(of)-444(the)-444(open)-432(source)]TJ
0 -1.188 TD
[(repository)-228(projects)-228(currently)-228(on)-240(the)-252(Internet.)-288(W)84(e)-264(belie)24(v)12(e)]TJ
0 -1.2 TD
[(Anon)12(ymous)-384(CVS)-420(has)-420(made)-408(a)-420(signi)]TJ
/TT9 1 Tf
14.7617 0 TD
(Þ)Tj
/TT4 1 Tf
0.5562 0 TD
[(cant)-408(positi)24(v)12(e)-408(im-)]TJ
-15.3178 -1.2 TD
[(pact)-336(in)-324(the)-336(open)-324(source)-324(community)60(.)-540(Anon)12(ymous)-300(CVS)]TJ
0 -1.188 TD
[(certainly)-348(had)-348(a)-360(positi)24(v)12(e)-348(impact)-348(on)-348(OpenBSD.)-348(W)84(e)-372(cur)24(-)]TJ
0 -1.2 TD
[(rently)-360(see)-372(around)-348(2000)-360(anoncvs)-348(transactions)-360(per)24(-week)]TJ
0 -1.188 TD
[(on)-348(our)-336(Canadian-based)-324(Anon)12(ymous)-324(CVS)-360(serv)12(er)60(.)-624(S)0(e)24(v)0(-)]TJ
0 -1.2 TD
[(eral)-228(of)-228(our)-216(other)-216(Anon)12(ymous)-192(CVS)-240(serv)12(ers)-228(report)-204(similar)]TJ
T*
[(usage.)-276(W)84(e)-216(hope)-192(to)-204(see)-204(more)-192(open)-192(source)-192(repository)-180(tools)]TJ
0 -1.188 TD
[(and)-240(projects)-228(appear)-228(on)-240(the)-240(Internet)-228(in)-252(the)-240(future.)]TJ
/TT2 1 Tf
12 0 0 12 72 362.7 Tm
[(Refer)20(ences)]TJ
/TT4 1 Tf
10 0 0 10 77.04 340.02 Tm
[([1])-480(B.)-444(Berliner)60(.)-972(CVS)-444(II:)-444(P)12(arallelizing)-420(softw)12(are)-432(de-)]TJ
1.656 -1.2 TD
[(v)12(elopment.)-636(In)]TJ
/TT6 1 Tf
6.2642 0 TD
[(USENIX)-336(Confer)36(ence)-336(Pr)48(oceedings)]TJ
/TT4 1 Tf
13.6398 0 TD
(,)Tj
-19.904 -1.188 TD
[(pages)-240(341–352.)-204(USENIX,)-240(1990.)]TJ
-1.656 -2.076 TD
[([2])-480(B.)-1584(Fenner)60(.)-4620(CVSW)84(eb.)-4644(See)]TJ
/TT8 1 Tf
1.656 -1.2 TD
[(www.freebsd.org/˜fenner/cvsweb.htm)12(l)]TJ
/TT4 1 Tf
20.9914 0 TD
(.)Tj
-22.6474 -2.076 TD
[([3])-480(Open)-768(Group.)-2052(X/Open)-768(single)-780(sign-on)-756(ser)24(-)]TJ
1.656 -1.2 TD
[(vice)-564(\(XSSO\))-564(-)-576(pluggable)-540(authentication.)-1368(See)]TJ
/TT8 1 Tf
0 -1.188 TD
(www.opengroup.org)Tj
0 -1.2 TD
(/pubs/catalog/p702.htm)Tj
/TT4 1 Tf
13.2021 0 TD
(.)Tj
-14.8581 -2.076 TD
[([4])-480(P)108(.)-420(Kamp.)-924(Current)-408(through)-396(e-mail)-420(\(CTM\).)-924(See)]TJ
/TT8 1 Tf
1.656 -1.2 TD
(www.freebsd.org)Tj
0 -1.188 TD
(/handbook/synching.html#CTM)Tj
/TT4 1 Tf
16.2026 0 TD
(.)Tj
-17.8586 -2.076 TD
[([5])-480(M.)-300(McK)12(usick,)-312(K.)-300(Bostic,)-324(M.)-300(Karels,)-324(and)-288(J.)-312(Quar)24(-)]TJ
1.656 -1.2 TD
(terman.)Tj
/TT6 1 Tf
3.9384 0 TD
[(The)-432(Design)-420(and)-408(Implementation)-396(of)-432(the)]TJ
-3.9384 -1.2 TD
[(4.4BSD)-216(Oper)12(ating)-216(System)]TJ
/TT4 1 Tf
10.3907 0 TD
[(.)-324(Addison)-228(W)84(esle)12(y)60(,)-228(1996.)]TJ
-12.0467 -2.076 TD
[([6])-480(J.)-252(Polstra.)-348(CVSup.)-348(See)]TJ
/TT8 1 Tf
11.1522 0 TD
(www.polstra.com)Tj
-9.4962 -1.188 TD
(/projects/freeware/CVSup/)Tj
/TT4 1 Tf
15.0024 0 TD
(.)Tj
-16.6584 -2.076 TD
[([7])-480(E.)-528(Raymond.)-1224(Open)-516(source)-516(home)-516(page.)-1236(See)]TJ
/TT8 1 Tf
1.656 -1.2 TD
(www.opensource.org)Tj
/TT4 1 Tf
10.8018 0 TD
(.)Tj
11.6622 63.804 TD
[([8])-480(M.)-348(Reiter)-360(and)-348(A.)-348(Rubin.)-696(Anon)12(ymity)-324(lo)12(v)12(e)0(s)-336(com-)]TJ
1.656 -1.2 TD
[(pan)12(y:)-456(Anon)12(ymous)-288(web)-336(transactions)-312(with)-336(cro)24(wds.)]TJ
/TT6 1 Tf
0 -1.188 TD
[(Communications)-228(of)-240(the)-252(A)24(C)0(M)]TJ
/TT4 1 Tf
11.5842 0 TD
[(,)-240(42\(2\):32–48,)-204(Febru-)]TJ
-11.5842 -1.2 TD
[(ary)-240(1999.)]TJ
-1.656 -1.992 TD
[([9])-480(M.)-420(Rochkind.)-888(The)-408(source)-408(code)-408(control)-408(system.)]TJ
/TT6 1 Tf
1.656 -1.2 TD
[(IEEE)-324(T)60(r)12(ansactions)-312(on)-324(Softwar)36(e)-324(Engineering)]TJ
/TT4 1 Tf
18.0637 0 TD
[(,)-324(SE-)]TJ
-18.0637 -1.188 TD
[(1\(4\):364–370,)-180(December)-228(1975.)]TJ
-2.16 -1.992 TD
[([10])-480(S.)-468(Shafer)60(.)-1056(The)-468(sup)-456(softw)12(are)-468(upgrade)-444(protocol.)]TJ
2.16 -1.2 TD
[(T)72(echnical)-480(report,)-540(Department)-468(of)-492(Computer)-468(Sci-)]TJ
0 -1.188 TD
[(ence,)-228(Carne)12(gie)-240(Mellon)-228(Uni)24(v)12(ersity)60(,)-228(1985.)]TJ
-2.16 -2.004 TD
[([11])-480(W)96(.)-420(T)36(ichy)60(.)-888(RCS)-432(–)-408(a)-420(system)-420(for)-408(v)12(ersion)-396(control.)]TJ
/TT6 1 Tf
2.16 -1.188 TD
[(Softwar)36(e)-216(–)-216(P)0(r)12(actice)-204(&)-228(Experience)]TJ
/TT4 1 Tf
13.5338 0 TD
[(,)-204(15\(7\):637–654,)]TJ
-13.5338 -1.2 TD
[(July)-240(1985.)]TJ
-2.16 -1.992 TD
[([12])-480(L.)-228(T)84(orv)24(alds)-204(et)-240(al.)-312(The)-216(Linux)-216(operating)-204(system.)-312(See)]TJ
/TT8 1 Tf
2.16 -1.188 TD
(www.linux.org)Tj
/TT4 1 Tf
7.8013 0 TD
(.)Tj
-9.9613 -2.004 TD
[([13])-480(A.)-444(T)36(ridgell)-432(and)-432(P)108(.)-444(Mack)12(erras.)-984(The)-432(rsync)-432(algo-)]TJ
2.16 -1.188 TD
[(rithm.)-504(T)72(echnical)-288(report,)-288(Department)-288(of)-288(Computer)]TJ
0 -1.2 TD
[(Science,)-240(Australian)-228(National)-240(Uni)24(v)12(ersity)60(,)-216(1998.)]TJ
ET
endstream
endobj
37 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/TT2 4 0 R
/TT4 5 0 R
/TT6 6 0 R
/TT8 7 0 R
/TT9 8 0 R
>>
/ExtGState <<
/GS1 9 0 R
>>
>>
endobj
21 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 1
/Height 1
/BitsPerComponent 1
/ImageMask true
/Length 2
>>
stream

endstream
endobj
9 0 obj
<<
/Type /ExtGState
/SA false
/SM 0.02
/OP false
/op false
/OPM 1
/BG2 /Default
/UCR2 /Default
/HT /Default
/TR2 /Default
>>
endobj
38 0 obj
<<
/Type /FontDescriptor
/Ascent 750
/CapHeight 676
/Descent -250
/Flags 262178
/FontBBox [-168 -218 1000 935]
/FontName /Times-Bold
/ItalicAngle 0
/StemV 133
/XHeight 461
/StemH 139
>>
endobj
39 0 obj
<<
/Type /FontDescriptor
/Ascent 750
/CapHeight 662
/Descent -250
/Flags 34
/FontBBox [-168 -218 1000 898]
/FontName /Times-Roman
/ItalicAngle 0
/StemV 84
/XHeight 450
/StemH 84
>>
endobj
40 0 obj
<<
/Type /FontDescriptor
/Ascent 750
/CapHeight 653
/Descent -250
/Flags 98
/FontBBox [-169 -217 1010 883]
/FontName /Times-Italic
/ItalicAngle -15
/StemV 76
/XHeight 441
/StemH 76
>>
endobj
41 0 obj
<<
/Type /FontDescriptor
/Ascent 753
/CapHeight 562
/Descent -246
/Flags 35
/FontBBox [-28 -250 628 805]
/FontName /Courier
/ItalicAngle 0
/StemV 51
/XHeight 426
/StemH 51
>>
endobj
42 0 obj
<<
/Type /FontDescriptor
/Ascent 750
/CapHeight 662
/Descent -250
/Flags 34
/FontBBox [-168 -218 1000 898]
/FontName /Times-Roman
/ItalicAngle 0
/StemV 84
/XHeight 450
/StemH 84
>>
endobj
43 0 obj
<<
/Type /FontDescriptor
/Ascent 750
/CapHeight 676
/Descent -250
/Flags 262178
/FontBBox [-168 -218 1000 935]
/FontName /Times-Bold
/ItalicAngle 0
/StemV 133
/XHeight 461
/StemH 139
>>
endobj
44 0 obj
<<
/Type /FontDescriptor
/Ascent 770
/CapHeight 718
/Descent -229
/Flags 32
/FontBBox [-166 -225 1000 931]
/FontName /Helvetica
/ItalicAngle 0
/StemV 88
/XHeight 523
/StemH 88
>>
endobj
4 0 obj
<<
/Type /Font
/Subtype /TrueType
/FirstChar 45
/LastChar 121
/Widths [333 250 0 0 500 500 500 500 500 0 0 0 0 333 0 0 
0 0 0 0 722 0 722 722 667 0 778 0 389 0 0 667 
944 0 778 611 0 722 556 667 0 722 1000 0 0 0 0 0 
0 0 0 0 500 556 444 556 444 333 500 556 278 333 0 278 
833 556 500 556 0 444 389 333 556 500 0 0 500 ]
/Encoding /WinAnsiEncoding
/BaseFont /Times-Bold
/FontDescriptor 38 0 R
>>
endobj
5 0 obj
<<
/Type /Font
/Subtype /TrueType
/FirstChar 40
/LastChar 151
/Widths [333 333 0 0 250 333 250 278 500 500 500 500 500 500 500 500 
500 500 278 0 0 0 0 0 0 722 667 667 722 611 556 722 
722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 
722 0 0 333 0 333 0 0 0 444 500 444 500 444 333 500 
500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 
500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 333 444 444 0 500 1000 
]
/Encoding /WinAnsiEncoding
/BaseFont /Times-Roman
/FontDescriptor 39 0 R
>>
endobj
6 0 obj
<<
/Type /Font
/Subtype /TrueType
/FirstChar 38
/LastChar 150
/Widths [778 0 0 0 0 0 250 333 250 0 0 0 0 0 500 0 
0 0 0 0 0 0 0 0 0 0 0 611 611 667 722 611 
611 0 0 333 444 0 556 833 667 722 611 0 611 500 556 722 
0 0 611 0 0 0 0 0 0 0 0 500 500 444 500 444 
278 500 500 278 278 444 278 722 500 500 500 0 389 389 278 500 
0 667 444 444 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
500 ]
/Encoding /WinAnsiEncoding
/BaseFont /Times-Italic
/FontDescriptor 40 0 R
>>
endobj
7 0 obj
<<
/Type /Font
/Subtype /TrueType
/FirstChar 32
/LastChar 152
/Widths [600 600 600 600 0 0 600 0 600 600 600 0 600 600 600 600 
600 600 600 600 0 0 0 600 0 0 600 600 0 600 600 0 
600 600 600 600 600 600 600 0 600 0 0 0 600 600 600 600 
600 0 600 600 600 600 600 0 0 600 0 600 600 600 0 600 
0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 
600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 600 0 0 0 0 0 600 ]
/Encoding /WinAnsiEncoding
/BaseFont /Courier
/FontDescriptor 41 0 R
>>
endobj
8 0 obj
<<
/Type /Font
/Subtype /TrueType
/FirstChar 222
/LastChar 223
/Widths [556 556 ]
/Encoding /MacRomanEncoding
/BaseFont /Times-Roman
/FontDescriptor 42 0 R
>>
endobj
20 0 obj
<<
/Type /Font
/Subtype /TrueType
/FirstChar 222
/LastChar 222
/Widths [556 ]
/Encoding /MacRomanEncoding
/BaseFont /Times-Bold
/FontDescriptor 43 0 R
>>
endobj
25 0 obj
<<
/Type /Font
/Subtype /TrueType
/FirstChar 32
/LastChar 121
/Widths [278 0 0 0 0 0 0 0 0 0 0 0 0 0 278 278 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 556 556 500 556 556 0 556 0 222 0 0 222 833 556 556 
556 0 333 500 278 556 500 0 500 500 ]
/Encoding /WinAnsiEncoding
/BaseFont /Helvetica
/FontDescriptor 44 0 R
>>
endobj
1 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 3 0 R
/Contents 2 0 R
>>
endobj
11 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 13 0 R
/Contents 12 0 R
>>
endobj
14 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 16 0 R
/Contents 15 0 R
>>
endobj
17 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 19 0 R
/Contents 18 0 R
>>
endobj
22 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 24 0 R
/Contents 23 0 R
>>
endobj
26 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 28 0 R
/Contents 27 0 R
>>
endobj
29 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 31 0 R
/Contents 30 0 R
>>
endobj
32 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 34 0 R
/Contents 33 0 R
>>
endobj
35 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 37 0 R
/Contents 36 0 R
>>
endobj
45 0 obj
<<
/S /D
>>
endobj
46 0 obj
<<
/Nums [0 45 0 R ]
>>
endobj
10 0 obj
<<
/Type /Pages
/Kids [1 0 R 11 0 R 14 0 R 17 0 R 22 0 R 26 0 R 29 0 R 32 0 R 35 0 R]
/Count 9
/MediaBox [0 0 612 792]
>>
endobj
47 0 obj
<<
/CreationDate (D:20040902225218-05'00')
/ModDate (D:20040902225218-05'00')
/Producer (PSNormalizer.framework)
>>
endobj
48 0 obj
<<
/Type /Catalog
/Pages 10 0 R
/PageLabels 46 0 R
>>
endobj
xref
0 49
0000000000 65535 f 
0000107189 00000 n 
0000000016 00000 n 
0000010080 00000 n 
0000104448 00000 n 
0000104858 00000 n 
0000105402 00000 n 
0000105894 00000 n 
0000106453 00000 n 
0000102924 00000 n 
0000108010 00000 n 
0000107270 00000 n 
0000010219 00000 n 
0000023322 00000 n 
0000107354 00000 n 
0000023462 00000 n 
0000038311 00000 n 
0000107438 00000 n 
0000038429 00000 n 
0000051965 00000 n 
0000106627 00000 n 
0000102786 00000 n 
0000107522 00000 n 
0000052153 00000 n 
0000063934 00000 n 
0000106797 00000 n 
0000107606 00000 n 
0000064076 00000 n 
0000066499 00000 n 
0000107690 00000 n 
0000066606 00000 n 
0000080761 00000 n 
0000107774 00000 n 
0000080890 00000 n 
0000095593 00000 n 
0000107858 00000 n 
0000095757 00000 n 
0000102646 00000 n 
0000103064 00000 n 
0000103266 00000 n 
0000103463 00000 n 
0000103663 00000 n 
0000103854 00000 n 
0000104051 00000 n 
0000104253 00000 n 
0000107942 00000 n 
0000107970 00000 n 
0000108148 00000 n 
0000108280 00000 n 
trailer
<<
/Size 49
/Root 48 0 R
/Info 47 0 R
/ID [<7eff75d40cc3ce4700e1c5e66f03c792><7eff75d40cc3ce4700e1c5e66f03c792>]
>>
startxref
108350
%%EOF