User:Pathoschild/2009 steward election statistics
Appearance
From Meta, a Wikimedia project coordination wiki
This page statistically summarizes the 2009 steward elections. See also a summary of the 2009 confirmations, and the collected statistics page.
Table
[edit ]Unique participants: 1116.
Last update: 2009年02月22日 01:02 (UTC)
candidate | support ratio | oppose reasons | result |
---|---|---|---|
Meno25 | 0.963, 96.3% (157/163) | — | elected |
Erwin | 0.96, 96% (192/200) | — | elected |
Kylu | 0.954, 95.4% (207/217) | — | elected |
Laaknor | 0.944, 94.4% (119/126) | — | elected |
Mike.lifeguard | 0.884, 88.4% (258/292) | — | elected |
Leinad | 0.868, 86.8% (138/159) | inexperience. | elected |
Dorgan | 0.844, 84.4% (141/167) | inexperience. | elected |
Alexanderps | 0.817, 81.7% (125/153) | too much access, allegations of canvassing and misuse of checkuser tool. | elected |
Mardetanha | 0.813, 81.3% (217/267) | disputes on fawiki, fear that Iranian government will gain his access under torture. | elected |
putnik | 0.792, 79.2% (152/192) | inexperience, unanswered questions, dispute on ruwiki. | failed |
Avraham | 0.785, 78.5% (150/191) | inexperience, limited language skills. | failed |
Fabexplosive | 0.781, 78.1% (114/146) | dispute on lmowiki, allegedly executes tasks without understanding them, |
failed |
Jredmond | 0.759, 75.9% (66/87) | inexperience, too much access, |
failed |
PhiLiP | 0.71, 71% (66/93) | inexperience, copyright issues with uploads, fear that Chinese government will gain his access under torture. | failed |
SpeedyGonsales | 0.696, 69.6% (87/125) | inexperience, misunderstanding of steward role, disputes on hrwiki. | failed |
Mywood | 0.671, 67.1% (55/82) | inexperience, copyright issues with uploads. | failed |
EVula | 0.546, 54.6% (77/141) | inexperience, too much access, limited language skills, appearance of incivility. | failed |
avjoska | 0.4, 40% (38/95) | inexperience, intent of inactivity as a steward. | failed |
Fadesga | 0.3, 30% (21/70) | inexperience, no steward goals, unanswered questions. | failed |
Al Lemos | 0.255, 25.5% (35/137) | inexperience, misunderstanding of steward role. | failed |
Pasquale | 0.19, 19% (12/63) | inexperience, misunderstanding of steward role, unanswered questions, little activity. | failed |
Apteva | 0.016, 1.6% (2/124) | inexperience, prior block, lack of steward goals, misunderstanding of steward role, little activity. | failed |
Loco085 | 0.646, 64.6% (42/65) | inexperience, unanswered questions. | withdrawn |
Cometstyles | 0.598, 59.8% (76/127) | alleged abuse of OTRS access, checkuser requests with insufficient reason. | withdrawn |
Orderinchaos | 0.265, 26.5% (13/49) | inexperience, limited language skills. | withdrawn |
Gutza | 0.193, 19.3% (11/57) | intent of inactivity as a steward, misunderstanding of steward role, unanswered questions. | withdrawn |
Chase me ladies, I'm the Cavalry | 0.000, — | disqualified; not identified. | disqualified |
Drakesketchit | 0.000, — | disqualified; not identified. | disqualified |
Fipplet | 0.000, — | disqualified; not identified. | disqualified |
Jagwar | 0.000, — | disqualified; not identified. | disqualified |
Wykypydya | 0.000, — | disqualified; not identified, not linked to an account meeting account requirements. | disqualified |
Update script
[edit ]This table can be updated using the following quick-and-dirty script while editing this page; this might take several seconds, depending on your connection speed, due to the size of the page. (Anyone wishing to update it automatically with another language is free to do so.)
/********************* ** Functions *********************/ // report to box functionses_report(text){ $('stewiestats').adopt(document.createTextNode(text)); } /********************* ** Initialize *********************/ functionses_initialize(){ // display status box if(!document.getElementById('stewiestats')){ // create box varbox=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_update()',500); return; } // reset box $('stewiestats').set({'text':'Loading required framework...\n'}); // start script ses_fetch_page(); } /********************* ** Fetch page text *********************/ functionses_fetch_page(){ /* update status box */ ses_report('Fetching elections page...\n'); /* grab page text */ varrequest=newRequest({ url:'http://meta.wikimedia.org/wiki/Stewards/elections_2009/votes?action=render', method:'GET', onSuccess:ses_parse_page, onFailure:function(xhr){ ses_report('AJAX error while fetching elections page: '+xhr.status+' ('+xhr.statusText+')\n'); } }).send(); } /********************* ** Count unique participants *********************/ functionses_count_participants(text){ ses_report('Counting unique participants... '); varlinks=text.match(/title="User:[^\/"]+/ig); varnames={}; varcount=0; if(links){ for(vari=0,len=links.length;i<len;i++){ varname=links[i].match(/User:(.+)/)[1]; if(!names[name]){ names[name]=1; count++; } } } ses_report(count+'\n'); editbox.value=editbox.value.replace(/(<span id="ses_count">).*?(<\/span>)/,'1ドル'+count+'2ドル'); } /********************* ** Extract data from page *********************/ functionses_parse_page(text,xml){ /* update status box */ ses_report('Extracting data...\n'); // strip out cruft text=text.replace(/^[\s\S]+?<table id="toc"[\s\S]+?<\/table>/,'');// introduction, TOC, etc text=text.replace(/^(<h2.+?<\/h2>)[\s\S]+?<h3[\s\S]+?(<h3)/mg,'1ドル\n2ドル');// statements, 'questions' header text=text.replace(/<ul>[\s\S]+?<\/ul>/g,'');// threaded bullets text=text.replace(/^(<(?:h2|h3|li).+\n*)|^.+\n*/mg,'1ドル');// everything else except headers and list items text=text.replace(/^<h(\d)>.*<span class="mw-headline">.*?>\s*([^<>]+?)\s*<.+<\/h1円>/mg,'<h1ドル>2ドル</h1ドル>');// simplify headers // count participants ses_count_participants(text); // data varnames=[];// all candidate names varvotes=[];// all section titles varcounts={};// vote counts per section per candidate varname='';// current candidate name varvote='';// current section ('Yes', 'No', 'Neutral') // parse text text=text.split('\n'); varlen=text.length; varline; for(vari=0;i<len;i++){ line=text[i]; // li: new vote if(line.match('<li')){ counts[name][vote]++; } // h3: new vote section elseif(line.match('<h3')){ vote=line.match(/<h3>(.+)<\/h3>/)[1]; votes.push(vote); counts[name][vote]=0; } // h2: new candidate elseif(line.match('<h2')){ name=line.match(/<h2>(.+)<\/h2>/)[1]; names.push(name); counts[name]={}; } } // update table ses_gen_table(names,votes,counts); } /********************* ** Return formatted date *********************/ functionses_get_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; } /********************* ** Update table *********************/ functionses_gen_table(names,votes,counts){ /* update status box */ ses_report('Generating updated table...\n'); /*************** ** Variables ***************/ // constants varlen=names.length;// number of candidates varyes=votes[0];// title of support headers varno=votes[1];// title of oppose headers // data varrows={};// all template texts varratios={};// all support ratios varsorted=[];// candidate names, sorted by ratio // other vartext=editbox.value; /*************** ** Regex to match candidate row template ***************/ functionreg_candidate_template(name){ returnnewRegExp('{{user[^}]+name *= *'+name+'[^}]+}}','mi'); } /*************** ** Fetch & update rows ***************/ for(vari=0;i<len;i++){ // grab text varname=names[i]; varrow=text.match(reg_candidate_template(name)).toString(); // update row=row.replace(/(support *=).*/,'1ドル '+counts[name][yes]); row=row.replace(/(oppose *=).*/,'1ドル '+counts[name][no]); // store rows[name]=row; ratios[name]=counts[name][yes]/(counts[name][yes]+counts[name][no]); } /*************** ** Sort rows ***************/ for(vari=0;i<len;i++){ varname=names[i]; varratio=counts[name][yes]/(counts[name][yes]+counts[name][no]); // insert into sorted position for(varx=0;x<=sorted.length;x++){ // end of array, just stick it in if(x==sorted.length){ sorted.push(name); break; } elseif(ratios[name]>ratios[sorted[x]]){ sorted.splice(x,0,name); break; } } } /*************** ** Update text ***************/ // date text=text.replace(/(<span id="ses_date">).*?(<\/span>)/,'1ドル'+ses_get_date()+'2ドル'); // rows varstr=''; for(vari=0;i<len;i++) str+=rows[sorted[i]]+'\n'; text=text.replace(/(<!--ses-start-->)[\s\S]+?(<!--ses-end-->)/i,'1ドル\n'+str+'2ドル'); // text editbox.value=text; /* update status box */ ses_report('Done.'); } ses_initialize();