User:Pathoschild/2009 steward confirmation statistics
Appearance
From Meta, a Wikimedia project coordination wiki
This page statistically summarizes the 2009 steward confirmations. See also a summary of the 2009 elections, and the collected statistics page.
Table
[edit ]Unique participants: 227.
This table only shows overall tendency. The final results are determined by discussing the arguments, not counting votes.
Last update: 2009年02月22日 01:15 (UTC)
steward | support ratio (approximate) | oppose reasons | result |
---|---|---|---|
Spacebirdy | 1.000, 100% (73/73) | — | confirmed |
DerHexer | 1.000, 100% (62/62) | — | confirmed |
guillom | 1.000, 100% (49/49) | — | confirmed |
Angela | 1.000, 100% (39/39) | — | confirmed |
M7 | 1.000, 100% (39/39) | — | confirmed |
Jon Harald Søby | 1.000, 100% (38/38) | — | confirmed |
Effeietsanders | 1.000, 100% (28/28) | — | confirmed |
Pathoschild | 0.981, 98.1% (53/54) | confirmed | confirmed |
Anthere | 0.975, 97.5% (39/40) | inactivity. | confirmed |
Shanel | 0.974, 97.4% (38/39) | — | confirmed |
Andre Engels | 0.974, 97.4% (37/38) | no statement. | confirmed |
Bastique | 0.969, 96.9% (62/64) | — | confirmed |
Nick1915 | 0.969, 96.9% (31/32) | — | confirmed |
Drini | 0.966, 96.6% (56/58) | — | confirmed |
Thogo | 0.964, 96.4% (54/56) | — | confirmed |
Wpedzich | 0.96, 96% (24/25) | usurped account on kowiki. | confirmed |
Lar | 0.95, 95% (57/60) | — | confirmed |
Dungodung | 0.939, 93.9% (46/49) | — | confirmed |
Darkoneko | 0.925, 92.5% (49/53) | — | confirmed |
Millosh | 0.917, 91.7% (22/24) | exclusion of en-Wikipedians from Global sysop proposal vote. | confirmed |
Rdsmith4 | 0.893, 89.3% (25/28) | — | confirmed |
Mav | 0.846, 84.6% (22/26) | inactivity. | confirmed |
Yann | 0.793, 79.3% (23/29) | inactivity, frwiki dispute, |
confirmed |
Walter | 0.731, 73.1% (19/26) | inactivity. | confirmed |
Redux | 0.722, 72.2% (13/18) | inactivity. | confirmed |
Jusjih | 0.571, 57.1% (12/21) | inactivity, violation of steward policies, too much access. | confirmed |
Oscar | 0.677, 67.7% (21/31) | inactivity. | confirmed |
Zirland | 0.429, 42.9% (9/21) | inactivity. | failed |
Jimbo Wales | 0.421, 42.1% (24/57) | inactivity, should have 'staff' flag instead. | Dear Founder |
Cspurrier | 0.263, 26.3% (5/19) | inactivity. | confirmed |
Sj | 0.111, 11.1% (2/18) | inactivity, no statement. | confirmed |
Dbl2010 | 0.059, 5.9% (1/17) | inactivity. | failed |
.anaconda | 0.000, 0% (0/9) | resigned; inactivity, no statement. | withdrawn |
Paginazero | 0.125, 12.5% (1/8) | resigned; inactivity. | withdrawn |
Shizhao | 0.000, 0% (0/2) | removed (was appointed as ombudsman); violation of steward policies. | withdrawn |
Script
[edit ]Although comments need to be tallied manually (there are no explicit support/oppose sections), this can be done quickly by using the following quick-and-dirty script to count all comments for every listed candidate, split them into oppose/support by manually checking new comments (most comments tend to reflect one side, with a small number of outliers), then sort the table by clicking the provided link.
/********************* ** Functions *********************/ functionses_report(text){ $('stewiestats').adopt(document.createTextNode(text)); } /********************* ** Initialize *********************/ functionses_update_stats(){ /********************* ** Display status box *********************/ varbox=document.getElementById('stewiestats'); if(!box){ // load required framework importScriptURI('http://meta.wikimedia.org/w/index.php?title=User:Pathoschild/Scripts/MooTools.js&action=raw&ctype=text/javascript'); // create box box=document.createElement('pre'); box.setAttribute('id','stewiestats'); box.setAttribute('style','margin:1em; padding:0.5em; border:1px solid #C00;'); box.appendChild(document.createTextNode('Loading required framework...\n')); editbox.parentNode.insertBefore(box,editbox.parentNode.firstChild); // jump to box window.location.hash="#stewiestats"; } /********************* ** Wait until WikiMooTools loaded *********************/ if(!window.$chk){ setTimeout('init_scan()',500); return; } // clear old messages box.empty(); ses_report('Loading required framework...\n'); /********************* ** Extract list of candidates & counts *********************/ ses_report('Extracting candidate list...\n'); varnames=[]; vartotals=[]; vartext=editbox.value.match(/<!--ses-start-->([\s\S]+?)<!--ses-end-->/)[1].toString(); vartemps=text.match(/{{user[\s\S]+?}}/ig); for(vari=0,len=temps.length;i<len;i++){ varsupps=temps[i].match(/support *= *(.+)/)[1].toString(); varoppos=temps[i].match(/oppose *= *(.+)/)[1].toString(); names[i]=temps[i].match(/name *= *(.+)/)[1].toString(); totals[i]=parseInt(supps)+parseInt(oppos); } /********************* ** Extract participant count *********************/ ses_report('Counting unique participants... '); box.adopt( newElement('span',{'id':'ses-box-count'}) ); ses_report('\n'); varrequest=newRequest({ url:'http://meta.wikimedia.org/wiki/Stewards/confirm?action=render', method:'GET', onSuccess:function(text,xml){ varlinks=text.match(/title="User:[^\/"]+/ig); varnames={}; varcount=0; for(vari=0,len=links.length;i<len;i++){ varname=links[i].match(/User:(.+)/)[1]; if(!names[name]){ names[name]=1; count++; } } $('ses-box-count').adopt(document.createTextNode(count)); editbox.value=editbox.value.replace(/(<span id="ses_count">).*?(<\/span>)/,'1ドル'+count+'2ドル'); }, onFailure:function(xhr){ $('ses-box-count').set({'text':' FAILED: '+xhr.status+' ('+xhr.statusText+')'}); } }).send(); /********************* ** Extract comment counts per candidate *********************/ ses_report('Fetching elections pages...\n'); for(vari=0,len=temps.length;i<len;i++){ vardiv=newElement('div') box.adopt(div); extract_count(div,names[i],totals[i]); } /********************* ** Extract a count *********************/ functionextract_count(div,name,prev_count){ varrequest=newRequest({ url:'http://meta.wikimedia.org/wiki/Stewards/confirm/2009/'+encodeURIComponent(name)+'?action=render', method:'GET', onSuccess:function(text,xml){ // strip cruft text=text.replace(/^[\s\S]+?Comments about .+/,'');// statement, etc text=text.replace(/^<([ou]l) [^>]*class="[^"]*stat-ignore[\s\S]+?<\/1円>/mg,'');// ignore non-comment bullets text=text.replace(/^<(?:ul|li).+class\s*=\s*"\s*neutral.+/mig,'');// ignore neutrals // count comments varcount=text.match(/^<li/mg).length; // report to user div.set({ 'text':' '+(count<10?' ':'')+count+' ' }).adopt( newElement('a',{ 'href':'http://meta.wikimedia.org/wiki/Stewards/confirm/2009/'+encodeURIComponent(name)+'?action=render', 'text':name }) ); // highlight those with non-matching counts if(count!=prev_count) div.set({'styles':{'background':'#FEE','font-weight':'bold'}}); else div.set({'styles':{'color':'gray'}}); }, onFailure:function(xhr){ div.set({'text':' '+name+' FAILED: '+xhr.status+' ('+xhr.statusText+')'}); } }).send(); } /********************* ** Add 'sort table' link *********************/ box.adopt( newElement('div').adopt( newElement('a',{ 'href':'javascript:ses_sort_table();', 'text':'sort table' }) ) ); } ses_update_stats(); /********************* ** Sort table *********************/ functionses_sort_table(){ ses_report('\nSorting table and updating date...\n'); /*************** ** Extract rows & data ***************/ varraw=editbox.value.match(/<!--ses-start-->([\s\S]+?)<!--ses-end-->/i)[1].toString(); raw=raw.match(/{{user[^}]+?}}/g); varnames=[]; varsorted=[]; varrows={}; varratios={}; varcounts={}; for(vari=0,len=raw.length;i<len;i++){ varname=raw[i].match(/name *= *(.+)/)[1].toString(); varsupports=raw[i].match(/support *= *(.+)/)[1].toString(); varopposes=raw[i].match(/oppose *= *(.+)/)[1].toString(); names.push(name); counts[name]=supports+opposes; ratios[name]=supports/(supports+opposes); rows[name]=raw[i]; } /*************** ** Sort rows ***************/ for(vari=0,len=names.length;i<len;i++){ varname=names[i]; varratio=ratios[name]; // insert into sorted position for(varx=0,slen=sorted.length;x<=slen;x++){ // end of array, just push it in if(x==slen){ sorted.push(name); break; } // equal but more votes (or sorted first), insert elseif(ratios[name]==ratios[sorted[x]]){ if(counts[name]>counts[sorted[x]]||(counts[name]==counts[sorted[x]]&&name<sorted[x])){ sorted.splice(x,0,name); break; } } // higher, insert elseif(ratios[name]>ratios[sorted[x]]){ sorted.splice(x,0,name); break; } } } /********************* ** Update date *********************/ functionget_date(){ // zero pad functionzero_pad(num){ if(num<10) num='0'+num; returnnum; } // generate string vard=newDate(); varstr=d.getUTCFullYear()+'-'+zero_pad(d.getUTCMonth()+1)+'-'+zero_pad(d.getUTCDate())+' ' +zero_pad(d.getUTCHours())+':'+zero_pad(d.getUTCMinutes())+' (UTC)'; returnstr; } editbox.value=editbox.value.replace(/(<span id="ses_date">).*?(<\/span>)/,'1ドル'+get_date()+'2ドル'); /*************** ** Update edit box ***************/ varstr=''; len=sorted.length; for(vari=0;i<len;i++) str+=rows[sorted[i]]+'\n'; editbox.value=editbox.value.replace(/(<!--ses-start-->)[\s\S]+?(<!--ses-end-->)/i,'1ドル\n'+str+'2ドル'); document.getElementById('wpSummary').value='updated'; ses_report('Done.'); }