PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i WWWWWW
Current Directory: /opt/cpanel/ea-ruby24/root/usr/share/ri/system
Viewing File: /opt/cpanel/ea-ruby24/root/usr/share/ri/system/page-contributing_rdoc.ri
U:RDoc::TopLevel[ iI"contributing.rdoc:EFcRDoc::Parser::Simpleo:RDoc::Markup::Document: @parts[�S:RDoc::Markup::Heading: leveli: textI"Contributing to Ruby;To:RDoc::Markup::BlankLineo:RDoc::Markup::Paragraph;[I"TRuby has a vast and friendly community with hundreds of people contributing to ;TI"Pa thriving open-source ecosystem. This guide is designed to cover ways for ;TI"/participating in the development of CRuby.;T@ o; ;[I"PThere are plenty of ways for you to help even if you're not ready to write ;TI"Tcode or documentation. You can help by reporting issues, testing patches, and ;TI"5trying out beta releases with your applications.;T@ S; ; i; I"How To Report;T@ o; ;[ I"OIf you've encountered a bug in Ruby please report it to the redmine issue ;TI"Utracker available at {bugs.ruby-lang.org}[https://bugs.ruby-lang.org/]. Do not ;TI"@report security vulnerabilities here, there is a {separate ;TI"Cchannel}[rdoc-label:label-Reporting+Security+Issues] for them.;T@ o; ;[I"QThere are a few simple steps you should follow in order to receive feedback ;TI"on your ticket.;T@ o:RDoc::Markup::List: @type: BULLET: @items[o:RDoc::Markup::ListItem: @label0;[o; ;[I"If you haven't already, ;TI"R{sign up for an account}[https://bugs.ruby-lang.org/account/register] on the ;TI"bug tracker.;To;;0;[o; ;[I"Try the latest version.;T@ o; ;[I"LIf you aren't already using the latest version, try installing a newer ;TI"stable release. See ;TI"A{Downloading Ruby}[https://www.ruby-lang.org/en/downloads/].;To;;0;[o; ;[I"<Look to see if anyone already reported your issue, try ;TI"S{searching on redmine}[https://bugs.ruby-lang.org/projects/ruby-trunk/issues] ;TI"for your problem.;To;;0;[o; ;[I"7If you can't find a ticket addressing your issue, ;TI"S{create a new one}[https://bugs.ruby-lang.org/projects/ruby-trunk/issues/new].;To;;0;[o; ;[I"QChoose the target version, usually current. Bugs will be first fixed in the ;TI"Ocurrent release and then {backported}[rdoc-label:label-Backport+Requests].;To;;0;[o; ;[I"HFill in the Ruby version you're using when experiencing this issue ;TI"(<code>ruby -v</code>).;To;;0;[o; ;[I"QAttach any logs or reproducible programs to provide additional information. ;TI"9Reproducible scripts should be as small as possible.;To;;0;[o; ;[I"QBriefly describe your problem. A 2-3 sentence description will help give a ;TI"quick response.;To;;0;[o; ;[I"NPick a category, such as core for common problems, or lib for a standard ;TI" library.;To;;0;[o; ;[I"Check the {Maintainers ;TI"Qlist}[https://bugs.ruby-lang.org/projects/ruby/wiki/Maintainers] and assign ;TI"Lthe ticket if there is an active maintainer for the library or feature.;To;;0;[o; ;[I"JIf the ticket doesn't have any replies after 10 days, you can send a ;TI"reminder.;To;;0;[o; ;[I"RPlease reply to feedback requests. If a bug report doesn't get any feedback, ;TI"#it'll eventually get rejected.;T@ S; ; i; I"*Reporting to downstream distributions;T@ o; ;[I"\You can report downstream issues for the following distributions via their bug tracker:;T@ o;;;;[ o;;0;[o; ;[I"M{debian}[http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=ruby-defaults];To;;0;[o; ;[I"I{freebsd}[http://www.freebsd.org/cgi/query-pr-summary.cgi?text=ruby];To;;0;[o; ;[I"|{redhat}[https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=MODIFIED];To;;0;[o; ;[I"e{macports}[http://trac.macports.org/query?status=assigned&status=new&status=reopened&port=~ruby];To;;0;[o; ;[I"1etc (add your distribution bug tracker here);T@ S; ; i; I"Platform Maintainers;T@ o; ;[I"SFor platform specific bugs in Ruby, you can assign your ticket to the current ;TI"(maintainer for a specific platform.;T@ o; ;[I"<The current active platform maintainers are as follows:;T@ o;;: LABEL;[o;;[I")mswin32, mswin64 (Microsoft Windows);T;[o; ;[I"NAKAMURA Usaku (usa);To;;[I")mingw32 (Minimalist GNU for Windows);T;[o; ;[I"Nobuyoshi Nakada (nobu);To;;[I"IA-64 (Debian GNU/Linux);T;[o; ;[I" TAKANO Mitsuhiro (takano32);To;;[I"Symbian OS;T;[o; ;[I"Alexander Zavorine (azov);To;;[I"AIX;T;[o; ;[I"Yutaka Kanemoto (kanemoto);To;;[I" FreeBSD;T;[o; ;[I"Akinori MUSHA (knu);To;;[I" Solaris;T;[o; ;[I"Naohisa Goto (ngoto);To;;[I"RHEL, CentOS;T;[o; ;[I"KOSAKI Motohiro kosaki;To;;[I" Mac OS X;T;[o; ;[I"Kenta Murata (mrkn);To;;[I"%cygwin, bcc32, djgpp, wince, ...;T;[o; ;[I"none. (Maintainer WANTED);T@ S; ; i; I"Reporting Security Issues;T@ o; ;[ I"RSecurity vulnerabilities receive special treatment since they may negatively ;TI"Qaffect many users. There is a private mailing list that all security issues ;TI"Eshould be reported to and will be handled discretely. Email the ;TI"Pmailto:security@ruby-lang.org list and the problem will be published after ;TI"Tfixes have been released. You can also encrypt the issue using {the PGP public ;TI"?key}[https://www.ruby-lang.org/security.asc] for the list.;T@ S; ; i; I"Reporting Other Issues;T@ o; ;[I"TIf you're having an issue with the website, or maybe the mailing list, you can ;TI"7contact the webmaster to help resolve the problem.;T@ o; ;[I"The current webmaster is:;T@ o;;;;[o;;0;[o; ;[I"Hiroshi SHIBATA (hsbt);T@ o; ;[I"TYou can also report issues with the ruby-lang.org website on the issue tracker:;T@ o;;;;[o;;0;[o; ;[I"F{issue tracker}[https://github.com/ruby/www.ruby-lang.org/issues];T@ S; ; i; I"Resolve Existing Issues;T@ o; ;[ I"OAs a next step beyond reporting issues you can help the core team resolve ;TI"Pexisting issues. If you check the Everyone's Issues list in GitHub Issues, ;TI"Tyou will find a lot of issues already requiring attention. What can you do for ;TI""these? Quite a bit, actually:;T@ o; ;[ I"QWhen a bug report goes for a while without any feedback, it goes to the bug ;TI">graveyard which is unfortunate. If you check the {issues ;TI"Ulist}[https://bugs.ruby-lang.org/projects/ruby-trunk/issues] you will find lots ;TI"/of delinquent bugs that require attention.;T@ o; ;[ I"SYou can help by verifying the existing tickets, try to reproduce the reported ;TI"Pissue on your own and comment if you still experience the bug. Some issues ;TI"Slack attention because of too much ambiguity, to help you can narrow down the ;TI"Pproblem and provide more specific details or instructions to reproduce the ;TI"Qbug. You might also try contributing a failing test in the form of a patch, ;TI"-which we will cover later in this guide.;T@ o; ;[ I"NIt may also help to try out patches other contributors have submitted to ;TI"Oredmine, if gone without notice. In this case the +patch+ command is your ;TI"Sfriend, see <code>man patch</code> for more information. Basically this would ;TI"go something like this:;T@ o:RDoc::Markup::Verbatim;[I"cd path/to/ruby/trunk ;TI"patch -p0 < path/to/patch ;T: @format0o; ;[ I"SYou will then be prompted to apply the patch with the associated files. After ;TI"Sbuilding ruby again, you should try to run the tests and verify if the change ;TI"Sactually worked or fixed the bug. It's important to provide valuable feedback ;TI"Ton the patch that can help reach the overall goal, try to answer some of these ;TI"questions:;T@ o;;;;[ o;;0;[o; ;[I"(What do you like about this change?;To;;0;[o; ;[I"#What would you do differently?;To;;0;[o; ;[I"/Are there any other edge cases not tested?;To;;0;[o; ;[I"FIs there any documentation that would be affected by this change?;T@ o; ;[ I"RIf you can answer some or all of these questions, you're on the right track. ;TI"QIf your comment simply says "+1", then odds are that other reviewers aren't ;TI"Ogoing to take it too seriously. Show that you took the time to review the ;TI" patch.;T@ S; ; i; I"How To Request Features;T@ o; ;[I"SIf there's a new feature that you want to see added to Ruby, you will need to ;TI"Dwrite a convincing proposal and patch to implement the feature.;T@ o; ;[ I"3For new features in CRuby, use the {'Feature' ;TI"_tracker}[https://bugs.ruby-lang.org/projects/ruby-trunk/issues?set_filter=1&tracker_id=2] ;TI"Son ruby-trunk. For non-CRuby dependent features, features that would apply to ;TI"Talternate Ruby implementations such as JRuby and Rubinius, use the {CommonRuby ;TI"?tracker}[https://bugs.ruby-lang.org/projects/common-ruby].;T@ o; ;[ I"NWhen writing a proposal be sure to check for previous discussions on the ;TI"Rtopic and have a solid use case. You will need to be persuasive and convince ;TI"TMatz on your new feature. You should also consider the potential compatibility ;TI".issues that this new feature might raise.;T@ o; ;[ I"QConsider making your feature into a gem, and if there are enough people who ;TI"Rbenefit from your feature it could help persuade ruby-core. Although feature ;TI"Orequests can seem like an alluring way to contribute to Ruby, often these ;TI"Sdiscussions can lead nowhere and exhaust time and energy that could be better ;TI",spent fixing bugs. Choose your battles.;T@ o; ;[I"LA good template for a feature proposal should look something like this:;T@ o;;;;[o;;[I" Abstract;T;[o; ;[I"Summary of your feature;To;;[I"Background;T;[o; ;[I"LDescribe current behavior and why it is problem. Related work, such as ;TI"Dsolutions in other language helps us to understand the problem.;To;;[I" Proposal;T;[o; ;[I"&Describe your proposal in details;To;;[I" Details;T;[o; ;[I"/If it has complicated feature, describe it;To;;[I" Usecase;T;[o; ;[I">How would your feature be used? Who will benefit from it?;To;;[I"Discussion;T;[o; ;[I"JDiscuss about this proposal. A list of pros and cons will help start ;TI"discussion.;To;;[I"Limitation;T;[o; ;[I" Limitation of your proposal;To;;[I"!Another alternative proposal;T;[o; ;[I"3If there are alternative proposals, show them.;To;;[I" See also;T;[o; ;[I")Links to the other related resources;T@ S; ; i; I"Slideshow;T@ o; ;[I"�At the Ruby Developer Meeting in Japan, committers discuss Feature Proposals together in Tokyo. We will judge proposals and then accept, reject, or give feedback for them. ;TI"ZIf you have a stalled proposal, making a slide to submit is good way to get feedback.;T@ o; ;[I"Slides should be:;T@ o;;;;[ o;;0;[o; ;[I"One-page slide;To;;0;[o; ;[I"*Include a corresponding ticket number;To;;0;[o; ;[I"4MUST include a figure and/or short example code;To;;0;[o; ;[I"ZSHOULD have less sentence in natural language (try to write less than 140 characters);To;;0;[o; ;[I"XIt is RECOMMENDED to itemize: motivation/use case, proposal, pros/cons, corner case;To;;0;[o; ;[I",PDF or Image (Web browsers can show it);T@ o; ;[I"Please note:;T@ o;;;;[o;;0;[o; ;[I"rEven if the proposal is generally acceptable, it won't be accepted without writing corner cases in the ticket;To;;0;[o; ;[I"4Slide's example: DevelopersMeeting20130727Japan;T@ S; ; i; I"Backport Requests;T@ o; ;[ I"RWhen a new version of Ruby is released, it starts at patch level 0 (p0), and ;TI"Qbugs will be fixed first on the trunk branch. If it's determined that a bug ;TI"Pexists in a previous version of Ruby that is still in the bug fix stage of ;TI"Tmaintenance, then a patch will be backported. After the maintenance stage of a ;TI"Oparticular Ruby version ends, it goes into "security fix only" mode which ;TI"Qmeans only security related vulnerabilities will be backported. Versions in ;TI"NEnd-of-life (EOL) will not receive any updates and it is recommended you ;TI"!upgrade as soon as possible.;T@ o; ;[I"TIf a major security issue is found or after a certain amount of time since the ;TI"Flast patch level release, a new patch-level release will be made.;T@ o; ;[ I"QWhen submitting a backport request please confirm the bug has been fixed in ;TI"Qnewer versions and exists in maintenance mode versions. There is a backport ;TI"Qtracker for each major version still in maintenance where you can request a ;TI"@particular revision merged in the affected version of Ruby.;T@ o; ;[I"QEach major version of Ruby has a release manager that should be assigned to ;TI"Phandle backport requests. You can find the list of release managers on the ;TI"N{wiki}[https://bugs.ruby-lang.org/projects/ruby/wiki/ReleaseEngineering].;T@ S; ; i; I" Branches;T@ o; ;[I":Status and maintainers of branches are listed on the ;TI"N{wiki}[https://bugs.ruby-lang.org/projects/ruby/wiki/ReleaseEngineering].;T@ S; ; i; I"Running tests;T@ o; ;[I"SIn order to help resolve existing issues and contributing patches to Ruby you ;TI"+need to be able to run the test suite.;T@ o; ;[ I"ICRuby uses subversion for source control, you can find installation ;TI"Dinstructions and lots of great info to learn subversion on the ;TI"S{svnbook.red-bean.com}[http://svnbook.red-bean.com/]. For other resources see ;TI"%the {ruby-core documentation on ;TI"Gruby-lang.org}[https://www.ruby-lang.org/en/community/ruby-core/].;T@ o; ;[ I"9This guide will use git for contributing. The {git ;TI"Phomepage}[http://git-scm.com/] has installation instructions with links to ;TI"Tdocumentation for learning more about git. There is a mirror of the subversion ;TI":repository on {github}[https://github.com/ruby/ruby].;T@ o; ;[I"QInstall the prerequisite dependencies for building the CRuby interpreter to ;TI"run tests.;T@ o;;;;[ o;;0;[o; ;[I"C compiler;To;;0;[o; ;[I" autoconf;To;;0;[o; ;[I" bison;To;;0;[o; ;[I" gperf;To;;0;[o; ;[I"Oruby - Ruby itself is prerequisite in order to build Ruby from source. It ;TI"can be 1.8.;T@ o; ;[I"JYou should also have access to development headers for the following ;TI"+libraries, but these are not required:;T@ o;;;;[o;;0;[o; ;[I" Tcl/Tk;To;;0;[o; ;[I"NDBM/QDBM;To;;0;[o; ;[I" GDBM;To;;0;[o; ;[I" OpenSSL;To;;0;[o; ;[I"readline/editline(libedit);To;;0;[o; ;[I" zlib;To;;0;[o; ;[I" libffi;To;;0;[o; ;[I" libyaml;To;;0;[o; ;[I"libexecinfo (FreeBSD);T@ o; ;[I"Now let's build CRuby:;T@ o;;;;[o;;0;[o; ;[I"$Checkout the CRuby source code:;T@ o;;[I"9git clone git://github.com/ruby/ruby.git ruby-trunk ;T;0o;;0;[o; ;[I"0Generate the configuration files and build:;T@ o;;[ I"cd ruby-trunk ;TI"autoconf ;TI"Pmkdir build && cd build # its good practice to build outside of source dir ;TI"Mmkdir ~/.rubies # we will install to .rubies/ruby-trunk in our home dir ;TI"8../configure --prefix="${HOME}/.rubies/ruby-trunk" ;TI"make up && make install ;T;0o; ;[I"OAfter adding Ruby to your PATH, you should be ready to run the test suite:;T@ o;;[I"make test ;T;0o; ;[I"JYou can also use +test-all+ to run all of the tests with the RUNRUBY ;TI"Qinterpreter just built. Use TESTS or RUNRUBYOPT to pass parameters, such as:;T@ o;;[I"make test-all TESTS=-v ;T;0o; ;[I"EThis is also how you can run a specific test from our build dir:;T@ o;;[I")make test-all TESTS=drb/test_drb.rb ;T;0o; ;[I";You can run +test+ and +test-all+ at once by +check+ .;T@ o;;[I"make check ;T;0o; ;[I"QFor older versions of Ruby you will need to run the build setup again after ;TI"Mchecking out the associated branch in git, for example if you wanted to ;TI"checkout 1.9.3:;T@ o;;[I"Bgit clone git://github.com/ruby/ruby.git --branch ruby_1_9_3 ;T;0o; ;[I"LOnce you checked out the source code, you can update the local copy by:;T@ o;;[I" make up ;T;0o; ;[I"3Or, update, build, install and check, by just:;T@ o;;[I"make love ;T;0S; ; i; I"Contributing Documentation;T@ o; ;[I"SIf you're interested in contributing documentation directly to CRuby there is ;TI"*a wealth of information available at ;TI":{documenting-ruby.org}[http://documenting-ruby.org/].;T@ o; ;[I"'There is also the {Ruby Reference ;TI"EManual}[https://bugs.ruby-lang.org/projects/rurema] in Japanese.;T@ S; ; i; I"Contributing A Patch;T@ S; ; i; I"Deciding what to patch;T@ o; ;[I"GBefore you submit a patch, there are a few things you should know:;T@ o;;;;[ o;;0;[o; ;[I"XPay attention to the maintenance policy for stable and maintained versions of Ruby.;To;;0;[o; ;[I"GReleased versions in security mode will not merge feature changes.;To;;0;[o; ;[I"RSearch for previous discussions on ruby-core to verify the maintenance policy;To;;0;[o; ;[I"6Patches must be distributed under Ruby's license.;To;;0;[o; ;[I"iThis license may change in the future, you must join the discussion if you don't agree to the change;T@ o; ;[I"XTo improve the chance your patch will be accepted please follow these simple rules:;T@ o;;;;[ o;;0;[o; ;[I"1Bug fixes should be committed on trunk first;To;;0;[o; ;[I"ZFormat of the patch file must be a unified diff (ie: diff -pu, svn diff, or git diff);To;;0;[o; ;[I"%Don't introduce cosmetic changes;To;;0;[o; ;[I"1Follow the original coding style of the code;To;;0;[o; ;[I".Don't mix different changes in one commit;T@ o; ;[I"LFirst thing you should do is check out the code if you haven't already:;T@ o;;[I"9git clone git://github.com/ruby/ruby.git ruby-trunk ;T;0o; ;[I"#Now create a dedicated branch:;T@ o;;[I"cd ruby-trunk ;TI"#git checkout -b my_new_branch ;T;0o; ;[ I"QThe name of your branch doesn't really matter because it will only exist on ;TI"Tyour local computer and won't be part of the official Ruby repository. It will ;TI"Pbe used to create patches based on the differences between your branch and ;TI"trunk, or edge Ruby.;T@ S; ; i; I"Coding style;T@ o; ;[I"RHere are some general rules to follow when writing Ruby and C code for CRuby:;T@ o;;;;[o;;0;[o; ;[I"PIndent 4 spaces for C with tabs for eight-space indentation (emacs default);To;;0;[o; ;[I"!Indent 2 space tabs for Ruby;To;;0;[o; ;[I""Do not use TABs in ruby codes;To;;0;[o; ;[I"4ANSI C style for 1.9+ for function declarations;To;;0;[o; ;[I""Follow C90 (not C99) Standard;To;;0;[o; ;[I"(PascalStyle for class/module names.;To;;0;[o; ;[I"9UNDERSCORE_SEPARATED_UPPER_CASE for other constants.;To;;0;[o; ;[I"Capitalize words.;To;;0;[o; ;[I"$ABBRs should be all upper case.;To;;0;[o; ;[I"Do as others do;T@ S; ; i; I"ChangeLog;T@ o; ;[I"QAlthough not required, if you wish to add a ChangeLog entry for your change ;TI"please note:;T@ o; ;[I"OYou can use the following template for the ChangeLog entry on your commit:;T@ o;;[ I"AThu Jan 1 00:00:00 2004 Your Name <yourmail@example.com> ;TI" ;TI"D * filename (function): short description of this commit. ;TI"@ This should include your intention of this change. ;TI"0 [bug:#number] [mailinglist:number] ;TI" ;TI"S * filename2 (function2): additional description for this file/function. ;T;0o; ;[I"3This follows {GNU Coding Standards for Change ;TI"VLogs}[http://www.gnu.org/prep/standards/html_node/Change-Logs.html#Change-Logs], ;TI"&some other requirements and tips:;T@ o;;;;[o;;0;[o; ;[I">Timestamps must be in JST (+09:00) in the style as above.;To;;0;[o; ;[I"HTwo spaces between the timestamp and your name. Two spaces between ;TI"%your name and your mail address.;To;;0;[o; ;[I">One blank line between the timestamp and the description.;To;;0;[o; ;[I"IIndent the description with TAB. 2nd line should begin with TAB+2SP.;To;;0;[o; ;[I"'Write a entry (*) for each change.;To;;0;[o; ;[I">Refer to redmine issue or discussion on the mailing list.;To;;0;[o; ;[I":For GitHub issues, use [GH-#] (such as [Fixes GH-234];To;;0;[o; ;[I"$One blank line between entries.;To;;0;[o; ;[I"Do as other committers do.;T@ o; ;[I"MYou can generate the ChangeLog entry by running <code>make change</code>;T@ o; ;[I"UWhen you're ready to commit, copy your ChangeLog entry into the commit message, ;TI"7keeping the same formatting and select your files:;T@ o;;[I"(git commit ChangeLog path/to/files ;T;0o; ;[I"TIn the likely event that your branch becomes outdated, you will have to update ;TI"your working branch:;T@ o;;[I"git fetch origin ;TI"&git rebase remotes/origin/master ;T;0o; ;[ I"ONow that you've got some code you want to contribute, let's get set up to ;TI"Ugenerate a patch. Start by forking the github mirror, check the {github docs on ;TI"Sforking}[https://help.github.com/articles/fork-a-repo] if you get stuck here. ;TI"OYou will only need a github account if you intend to host your repository ;TI"on github.;T@ o; ;[I"RNext copy the writable url for your fork and add it as a git remote, replace ;TI"1"my_username" with your github account name:;T@ o;;[I"@git remote add my_fork git@github.com:my_username/ruby.git ;TI".# Now we can push our branch to our fork ;TI"$git push my_fork my_new_branch ;T;0o; ;[I"UIn order to generate a patch that you can upload to the bug tracker, we can use ;TI";the github interface to review our changes just visit ;TI"Fhttps://github.com/my_username/ruby/compare/trunk...my_new_branch;T@ o; ;[ I"SNext, you can simply add '.patch' to the end of this URL and it will generate ;TI"Pthe patch for you, save the file to your computer and upload it to the bug ;TI"Ttracker. Alternatively you can submit a pull request, but for the best chances ;TI"Eto receive feedback add it is recommended you add it to redmine.;T@ o; ;[ I"TSince git is a distributed system, you are welcome to host your git repository ;TI")on any {publicly accessible hosting ;TI"Vsite}[https://git.wiki.kernel.org/index.php/GitHosting], including {hosting your ;TI"aown}[https://www.kernel.org/pub/software/scm/git/docs/user-manual.html#public-repositories] ;TI"TYou may use the {'git format-patch'}[http://git-scm.com/docs/git-format-patch] ;TI"Mcommand to generate patch files to upload to redmine. You may also use ;TI"Tthe {'git request-pull'}[http://git-scm.com/docs/git-request-pull] command for ;TI"1formatting pull request messages to redmine.;T: @file@:0@omit_headings_from_table_of_contents_below0