[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re-thinking Debian membership - take #1: inactivity



[ The original post I'm replying to is at
  http://lists.debian.org/debian-project/2008/10/msg00145.html ]

On Fri, Oct 24, 2008 at 11:44:03AM +0300, Lars Wirzenius wrote:
> I do not like the way Joerg wants to change the way people become and
> are members of the Debian project. It's not all bad, but on the whole it
> makes some of the worst parts of Debian become worse. It concentrates
> power into fewer hands, removes some of the benefits of the Debian
> Maintainer process, adds more hoops to jump through, and makes the whole
> question of what it means to be a member of Debian massively
> complicated.
> 
> I think we should go in the opposite direction: massively simplify
> the whole membership thing.

This proposal received a lot of interest back then, but in the end
went nowhere. I think we should resurrect it and put into use at least
some of its parts. In particular, the part about "expiration of DD
rights" received only minor criticisms; criticisms which I've tried to
address.

The essence of the proposal I'm advancing follows; if there is
interest, it should then be converted into a GR text and voted upon.

------------------------------------------------------------------------

* DDs which are not active for 2 years or more automatically loose
  vote and upload rights.

* Activity is defined as not having neither voted nor signed any
  upload (in the past 2 years).

------------------------------------------------------------------------

Some notes, including discussion of what changed wrt original text:

- Inactivity takes now into account uploads and not only votes (to
  avoid "mandatory voting").  This way, inactivity is defined around
  unused rights which are DD-specific: voting and uploading.

- The part about entering the project of Lars' proposal is no longer
  there, for two reasons: (1) it received way more criticism and
  that's enough of a reason to split it away; (2) part of the received
  criticism where bound to the potential amount of inactive DDs we
  currently have. That "flaw" can potentially be fixed by this
  proposal before moving to the other.

- The proposal does not overload the current "emeritus" status, which
  can be entered upon request and has an easy way back. For
  formality-fans, the current proposal can be seen as defining a new
  "inactive" status which you enter after the 2 years of
  inactivity. From there you can go to emeritus upon request or
  something such. (FWIW, I don't think these details should be part of
  the GR text.)

I'm looking for comments on this proposal. If there is interest, I of
course volunteer to draft the GR text.


Cheers


PS I've "implemented" the proposal, by checking TTBOMK how many
   accounts will be affected by its adoption: 172 accounts as of
   today. The code it's attached: it uses UDD for upload history and
   *_voters.txt files from www.d.o for voting stats (which
   are over approximated and "save" accounts which have voted up to 3
   years - 1 day ago)). As usual, there might be bugs, but I don't
   think the merits of the proposal can be affected by them.

PS2 quotes of Lars' original proposal follow, mostly as kudos and
    because he is way better than me in explaining this kind of things
    :-)

> The other end of the membership process is screwed up too. We should
> not have to actively seek out members who are Missing In
> Action. Staying a member in Debian should be an active process: if
> you don't do anything, you should be automatically retired.
<snip>
>
> Proposal
> --------
> * Membership ends 24 months after they're given, or after the latest
>   participation in a vote arranged by the project's Secretary. Members
>   may retire themselves earlier, of course.

-- 
Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7
zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/
Dietro un grande uomo c'è ..|  .  |. Et ne m'en veux pas si je te tutoie
sempre uno zaino ...........| ..: |.... Je dis tu à tous ceux que j'aime
#!/bin/bash
# Copyright: © 2009 Stefano Zacchiroli <zack@debian.org>
# License:   GNU General Public License, version 3 or above

TARGETDIR="/org/udd.debian.org/mirrors/votes"
BASEURL="http://www.debian.org/vote";
WGET="wget --timestamping -q"

mkdir -p $TARGETDIR
rm -rf $TARGETDIR/*

start_year="2006"       # before that, URL scheme was different
this_year=`date +%Y`
for year in `seq $start_year $this_year` ; do
    for i in `seq -w 1 999` ; do
        $WGET -O "$TARGETDIR/${year}_vote_${i}_voters.txt" "$BASEURL/$year/vote_${i}_voters.txt" || break
        $WGET -O "$TARGETDIR/${year}_vote_${i}_tally.txt" "$BASEURL/$year/vote_${i}_tally.txt" || break
    done
done
for f in $TARGETDIR/* ; do      # wget's timestamping leaves around empty files
    test -s $f || rm -f $f
done
#!/bin/bash
# Copyright: © 2009 Stefano Zacchiroli <zack@debian.org>
# License:   GNU General Public License, version 3 or above

# Requirements: Debian package "moreutils"

# years of inactivities to be reported
YEARS=2

# where to find _voters.txt files
# see http://svn.debian.org/wsvn/collab-qa/udd/scripts/fetch_votes.sh
VOTESDIR="/org/udd.debian.org/mirrors/votes"

udd="ssh merkel.debian.org /usr/lib/postgresql/8.4/bin/psql 'service=udd' -t -A -c"

no_upload_query="
SELECT l.login
FROM carnivore_keys AS k
     JOIN carnivore_login AS l ON k.id = l.id
     JOIN upload_history AS u ON k.key = u.fingerprint
WHERE key_type = 'keyring'
GROUP BY l.login
HAVING MAX(u.date) < current_date - 365 * $YEARS
ORDER BY l.login
;"

this_year=$(date +%Y)

info () {
    echo "* $*" 1>&2
}

no_uploaders=$(mktemp -t tmp.inactive_dd.XXXXXXXXXX)
recent_voters=$(mktemp -t tmp.inactive_dd.XXXXXXXXXX)
inactive=$(mktemp -t tmp.inactive_dd.XXXXXXXXXX)
trap "rm -f $no_uploaders $no_voters $inactive" EXIT

$udd "\"$no_upload_query\"" > $no_uploaders
info "DDs with no uploads in the last $YEARS year(s): $(wc -l $no_uploaders | cut -f 1 -d' ')"

for year in $(seq $[$this_year - $YEARS] $this_year) ; do
    for report in $VOTESDIR/${year}_vote_*_voters.txt ; do
	egrep -h '^\s*[0-9]+' $report | awk '{print $2}'
    done
done | sort -u > $recent_voters
info "DDs which have voted in the last $YEARS year(s): $(wc -l $recent_voters | cut -f 1 -d' ')"

combine $no_uploaders not $recent_voters > $inactive
info "DDs which have neither uploaded nor voted in the last $YEARS year(s): $(wc -l $inactive | cut -f 1 -d' ')"

cat $inactive

Attachment: signature.asc
Description: Digital signature


Reply to: