From 9a4b49d9286584db2cfcec4e13aa0ce2c2efff23 Mon Sep 17 00:00:00 2001
From: Tobias Mueller
+ Below you will find a list of candidates who are running for the
+ GNOME Foundation Board of Directors. A short summary statement from
+ each candidate and a link to their full candidacy announcement is
+ provided to help you learn more about them. We encourage all voters
+ to read the full candidacy statements and related discussions on
+ foundation-list@gnome.org.
+
+ When deciding who you should vote for, please carefully consider
+ the various tasks the Board of Directors must perform. This
+ overview may be helpful. Keep in mind that
+ the board will make a number of important decisions and will also have to
+ perform many tasks which require a significant amount of time and effort
+ and the ability to work and communicate with other people, companies, and
+ the media. The board of directors will represent GNOME to companies and
+ the world in a very real way. It is a good idea to strive for a
+ well-balanced board consisting of people with various backgrounds,
+ skills, and perspectives.
+
+ Additional elections details can be found on the
+ GNOME Foundation Web Site.
+
+ If you have any questions, please send them to either
+ foundation-list@gnome.org
+ or to us at elections@gnome.org.
+
+ 1. Brian Cameron
+ 2. Yang Emily Chen
+ 3. Baris Cicek
+ 4. Paul Cutler
+ 5. Seif Lotfy
+ 6. Og Maciel
+ 7. Andreas Nilsson
+ 8. Bastien Nocera
+ 9. Germán Póo-Caamaño
+ 10. Diego Escalante Urrelo
+ 11. Jonh Wendell
+ Note, that according to the
+ Bylaws Article VIII Section 2d
+ there is a 2-person maximum on the number of people affiliated with any
+ one company that can be on the board: if more than 2 persons from one
+ company get elected, only the top 2 vote getters will get on.
+ You will be able to vote for up to 7 candidates of your choice, with no
+ restrictions, except that you cannot vote more than once for the same
+ candidate.
+
+ If you have any futher question, please consult the
+ Rules for this election or write to
+ elections@gnome.org.
+
+ The GNOME Foundation Membership currently elects the Board of
+ Directors each year for July, 1st. Any member can nominate
+ themself to run in the elections. The overall elections process
+ is overseen by the Membership and Elections Committee, which can
+ be reached at elections@gnome.org.
+
+ The elections results from the 2012 Board of Directors elections
+ will be archived here for public access.
+ (all deadlines are 23:59 UTC)Candidates for the GNOME Foundation 2012 Elections
+
+ Candidates for the GNOME Foundation Board of Directors
+
+
+
+ Affiliation: Oracle
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00005.html
+
+I am running for re-election for a third term on the board. I am
+running not just because I love GNOME, the GNOME community, and free
+software; but also because I have experience working on the board and a
+good track record of getting things done.
+
+
+
+
+
+ Affiliation: Sun Microsystems, Inc. (Will become Oracle soon after LEC in China)
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00008.html
+
+Hi, this Emily Chen. I participated in GNOME since 2006. Now I am continue working in GNOME community because I believe in GNOME. I worked on LDTP project in 2006, then participated in Google Summer of Code 2006 and 2007 on GNOME LDTP projects as mentor. In 2008, I started the GNOME.Asia and organized the GNOME.Asia Summit 2008 in China and GNOME.Asia Summit 2009 in Vietnam. Now I am working on the GNOME.Asia 2010, which will be host in Taiwan in August. Also, I start the Beijing GNOME Users Group in Beijing since 2008 Nov. Now Beijing GNOME Users Group is one of the most active organization in Beijing. I want to make GNOME grow in Beijing, China, and Asia, it is meaningful to promote GNOME to more people, especially in Asia, because I see many opportunity and good community here in Asian.
+
+
+
+
+
+ Affiliation: Nerd Software
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00015.html
+
+I'm 27 years old, and contributing GNOME since early 2000s. I've been
+taking role of GNOME Turkish translation coordinator since 2004, and in
+past served community at GNOME Membership and Elections committee for
+three years. My last but not the least significant contribution was
+organizing GUADEC 2008 which was held in Istanbul.
+
+Since from the day one I've also been trying to contribute with
+occasional bug reports and patches for various GNOME applications as
+well.
+
+
+
+
+
+ Affiliation: Novell
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00002.html
+
+Hi, I'm Paul and I've been contributing to GNOME since 2006 in
+documentation, marketing and the web team. I have been on the Board for
+the last two months having been asked to fill Behdad's term. I think the
+GNOME Foundation is doing very well and the future is bright with GNOME
+3.0 just around the corner. I want to help promote GNOME 3 and continue
+to improve the communication between the Board, the GNOME communities
+and GNOME's partners to help GNOME grow.
+
+
+
+
+ Affiliation: None
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00014.html
+
+ Hello, I'm Seif Lotfy, I have been using GNOME since 2004
+and participated starting 2007. I enjoy being part of the community and
+enjoy spreading GNOME.
+
+ I initiated Zeitgeist and GNOME activity Journal, and dedicated most of
+my time developing them and building a community around both. Now I would
+love to start contributing in other parts of GNOME.
+
+
+
+
+ Affiliation: rPath Inc
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00004.html
+
+The GNOME Project has allowed me to take my first steps into the world
+of collaborative projects and long nights of translation sprints. Due
+to my open minded attitude, I have been able to get involved in many
+different projects and work with a great number of interesting people.
+
+My passion is in the community aspect of these projects and how to
+better integrate new comers and volunteers with the rest of the
+community. I am also extremely interested in how we, the open source
+community as a whole, can leverage this immense pool of ideas and
+projects, and use it to the benefit of all.
+
+If elected to the board, I will bring in my experience of building
+communities and guiding/enabling users to become more active in the
+GNOME Project. After all, the GNOME Project IS about people! I will
+also push to make accessibility a high priority for the project.
+
+
+
+
+ Affiliation: None
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00013.html
+
+I'm Andreas Nilsson, 28 years old, from Sweden. I've been part of the GNOME community since around 2005 and do all kinds of visual stuff for the project. Websites, t-shirts, icons, etc. as part of the Art team and the Marketing team. I run my own freelance design company in Gothenburg and this is my candidacy for GNOME Board of Directors.
+
+
+
+
+
+
+
+ Affiliation: Red Hat UK Ltd., a wholly owned subsidiary of Red
+Hat Inc.
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00016.html
+
+I'm a 31 year-old French Anglophile, who has been involved in GNOME for
+more than 10 years, first as an application developer, then as a core
+hacker (though I did not hack on gnome-core[1] at the time).
+
+
+
+
+
+ Affiliation: None
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00017.html
+
+ I am a contributor since 2000 and I am running for re-election
+ for the Foundation Board because I am confident there is plenty
+ of room where I can help to Gnome and its community, as in the
+ last year, bringing a different perspective and an independent
+ voice.
+
+
+
+
+
+ Affiliation: Igalia S.L.
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00009.html
+
+ I'm Diego, 22, from good old Lima - Perú. I've been involved
+ since 2006, I've contributed with code, bug triaging, accounts
+ administration, promotion with/at events, organization, Board, etc.
+
+ I love GNOME and our community, it's awesome :).
+
+
+
+
+
+ Affiliation: Santo Antonio Sugar Company
+ Full statement at http://mail.gnome.org/archives/foundation-announce/2010-May/msg00003.html
+
+I've been using GNOME since 2005 and contributing since 2006.
+I love GNOME. I love to spread GNOME. I love to bring new
+contributors to GNOME. That's why I'm running for the board
+of directors (for the first time).
+
+
+
+
+
+
+
+ Additional Elections-related Information
+
+ GNOME Foundation 2012 Elections
+
+ 2012 Elections Materials:
+
+
+
+
+
+
+
diff --git a/foundation.gnome.org/vote/2012/mkical.py b/foundation.gnome.org/vote/2012/mkical.py
new file mode 100644
index 0000000..977ac1c
--- /dev/null
+++ b/foundation.gnome.org/vote/2012/mkical.py
@@ -0,0 +1,258 @@
+#!/usr/bin/env python
+'''
+This Python script creates a simple iCal file based on hardcoded events
+in this file.
+'''
+
+import calendar
+import datetime
+import logging
+import math
+import os
+import vobject
+
+
+#### Configure these variables
+YEAR = 2012
+CANDIDATES_OPENED_DATE = (YEAR, 5, 7)
+CANDIDATES_CLOSED_DATE = (YEAR, 5, 20)
+CANDIDATES_ANNOUNCED_DATE = (YEAR, 5, 23)
+VOTING_OPENED_DATE = (YEAR, 5, 27)
+VOTING_CLOSED_DATE = (YEAR, 6, 10)
+PRELIMINARY_RESULTS_DATE = (YEAR, 6, 12)
+CHALLENGE_CLOSED_DATE = (YEAR, 6, 19)
+
+
+
+### I'm sorry that these functions clutter your calendar-creating experience
+### Please scroll down a bit to edit the description texts
+
+#### Application Data
+def c(multilinestring):
+ '''
+ A helper functions which cleans up a multiline string, so that
+ it doesn't contain any newlines or multiple whitespaces
+ '''
+ stripped = [l.strip() for l in multilinestring.splitlines()]
+ ret = " ".join (stripped)
+ return ret
+
+def d(year, month, day):
+ '''
+ Just a tiny wrapper around datetime.datetime to create a datetime object
+ '''
+ return datetime.date(year, month, day)
+
+
+
+CANDIDATES_OPENED = (
+ d(*CANDIDATES_OPENED_DATE),
+ 'Announcements and list of candidates opens',
+ c("""If you are a member of the GNOME Foundation and are interested
+ in running for election, you may nominate yourself by sending an
+ e-mail to foundation-announce@gnome.org with your name, e-mail
+ address, corporate affiliation (if any), and a description of why
+ you'd like to serve, before
+ %s (23:59 UTC).""" % d(*CANDIDATES_CLOSED_DATE)) + '''
+ ''' + c("""
+ You should also send a summary of your candidacy announcement
+ (75 words or less) to elections@gnome.org. If you are not yet a
+ GNOME Foundation member and would like to stand for election,
+ you must first apply for membership and be accepted to be eligible
+ to run. (You may, however, announce your candidacy prior to formal
+ acceptance of your application;
+ should your application not be accepted, you will not be included in
+ the list of candidates.)""") + '''
+ '''
+)
+
+CANDIDATES_CLOSED = (
+ d(*CANDIDATES_CLOSED_DATE),
+ 'List of candidates closed',
+ CANDIDATES_OPENED[2] # Get the same text again
+)
+
+CANDIDATES_ANNOUNCED = (
+ d(*CANDIDATES_ANNOUNCED_DATE),
+ 'List of candidates announced',
+ 'You may now start to send your questions to the candidates'
+)
+
+VOTING_OPENED = (
+ d(*VOTING_OPENED_DATE),
+ 'Instructions to vote are sent',
+ 'Please read your email and follow these instructions and submit your vote by %s' % d(*VOTING_CLOSED_DATE)
+)
+VOTING_CLOSED = (
+ d(*VOTING_CLOSED_DATE),
+ 'Votes must be returned',
+ 'Preliminary results are announced on %s' % d(*PRELIMINARY_RESULTS_DATE)
+)
+
+
+PRELIMINARY_RESULTS = (
+ d(*PRELIMINARY_RESULTS_DATE),
+ 'Preliminary results are announced',
+ 'The preliminary results can be challenged until %s' % d(*CHALLENGE_CLOSED_DATE)
+)
+
+CHALLENGE_CLOSED = (
+ d(*CHALLENGE_CLOSED_DATE),
+ 'Challenges to the results closed',
+ "If there weren't any challenges, preliminary results are valid"
+)
+
+
+
+
+def create_ical(eventlist):
+ '''Generates an ical stream based on the list given as eventlist.
+ The list shall contain elements with a tuple with a
+ (date, string, string) object, serving as date when the event takes place,
+ summary and description respectively.
+ '''
+ log = logging.getLogger('create_ical')
+
+ cal = vobject.iCalendar()
+ cal.add('method').value = 'PUBLISH'
+ cal.add('calscale').value = 'GREGORIAN'
+ cal.add('x-wr-timezone').value = 'UTC'
+
+ for (timestamp, summary, description) in eventlist:
+ log.debug('creating %s, %s', timestamp, description)
+ vevent = cal.add('vevent')
+ vevent.add('dtstart').value = timestamp
+ vevent.add('dtend').value = timestamp + datetime.timedelta(1)
+ vevent.add('summary').value = summary
+ vevent.add('description').value = description
+
+ stream = cal.serialize()
+ return stream
+
+
+def wraptext(s, width):
+ '''Wraps a string @s at @width characters.
+
+ >>> wraptext('fooo', 2)
+ ['fo','oo']
+ '''
+ l = len(s)
+ nr_frames = int(math.ceil(float(l)/width))
+ print nr_frames
+ frames = []
+ for i in xrange(nr_frames):
+ start, end = i*width, (i+1) * width
+ frames.append(s[start:end])
+ # One could (and prolly should) yield that
+ return frames
+
+def ordinal(n):
+ n = int(n)
+ if 10 <= n % 100 < 20:
+ return str(n) + 'th'
+ else:
+ return str(n) + {1 : 'st', 2 : 'nd', 3 : 'rd'}.get(n % 10, "th")
+
+
+def cal_for_month(month, events, width=80, year=datetime.datetime.now().year):
+ '''Generates a textual calendar for the @month in @year.
+ It will return a string with the calendar on the left hand side and the
+ events on the right hand side.
+ @events shall be a list with tuples: timestamp, summary, description.
+
+ Returns a string with the calendar
+ '''
+ log = logging.getLogger('cal_for_month')
+
+ cal = calendar.TextCalendar()
+ calstrings = cal.formatmonth(year, month, 3).splitlines()
+
+ for (timestamp, summary, description) in events:
+ log.debug('creating %s, %s', timestamp, summary)
+ year, month, day = timestamp.year, timestamp.month, timestamp.day
+ maxwidth = max([len(cs) for cs in calstrings])
+ rightwidth = 80 - maxwidth
+ for i, line in enumerate(calstrings):
+ needles = (" %d " % day,
+ " %d\n" % day)
+ replacement = "(%d)" % day
+ # Find the day so that we can highlight it and add a comment
+ day_in_week = False
+ for needle in needles:
+ if needle in line+"\n":
+ # k, this looks a bit weird but we have that corner
+ # case with the day being at the end of the line
+ # which in turn will have been split off
+ day_in_week = True
+ break # Set the needle to the found one
+ if day_in_week == False: # Nothing found, try next week
+ log.debug('Day (%d) not found in %s', day, line)
+ continue
+ else:
+ log.debug('Day (%d) found in %s', day, line)
+ new_line = (line+"\n").replace(needle, replacement).rstrip()
+ new_line += " %s (%s)" % (summary, ordinal(day))
+ # Replace in-place for two events in the same week
+ # FIXME: This has bugs :-(
+ calstrings[i] = new_line
+
+ return os.linesep.join(calstrings)
+
+def create_textcal(eventlist):
+ '''Generates a multiline string containing a calendar with the
+ events written on the side
+ The list shall contain elements with a tuple with a
+ (date, string, string) object, serving as date when the event takes place,
+ summary and description respectively.
+ '''
+ log = logging.getLogger('textcal')
+ log.debug('Generating from %s', eventlist)
+ months = set(map(lambda x: x[0].month, eventlist))
+ year = set(map(lambda x: x[0].year, eventlist)).pop()
+
+ final_cal = []
+ for month in months:
+ events = filter(lambda x: x[0].month == month, eventlist)
+ log.debug('Events for %d: %s', month, events)
+ month_cal = cal_for_month(month, events, year=year)
+ final_cal.append(month_cal)
+
+ return os.linesep.join(final_cal)
+
+if __name__ == "__main__":
+ from optparse import OptionParser
+ parser = OptionParser("usage: %prog [options]")
+ parser.add_option("-l", "--loglevel", dest="loglevel", help="Sets the loglevel to one of debug, info, warn, error, critical",
+ default=None)
+ parser.add_option("-i", "--ical",
+ action="store_true", dest="ical", default=False,
+ help="print iCal file to stdout")
+ parser.add_option("-t", "--textcal",
+ action="store_true", dest="tcal", default=False,
+ help="print textual calendar to stdout")
+ (options, args) = parser.parse_args()
+
+ loglevel = {'debug': logging.DEBUG, 'info': logging.INFO,
+ 'warn': logging.WARN, 'error': logging.ERROR,
+ 'critical': logging.CRITICAL}.get(options.loglevel, "warn")
+ logging.basicConfig( level=loglevel )
+ log = logging.getLogger()
+
+ eventlist = [
+ CANDIDATES_OPENED,
+ CANDIDATES_CLOSED,
+ CANDIDATES_ANNOUNCED,
+ VOTING_OPENED,
+ VOTING_CLOSED,
+ PRELIMINARY_RESULTS,
+ CHALLENGE_CLOSED,
+ ]
+
+ if not any([options.ical, options.tcal]):
+ parser.error("You want to select either ical or textcal output. See --help for details")
+ if options.ical:
+ ical = create_ical( eventlist )
+ print ical
+ if options.tcal:
+ tcal = create_textcal( eventlist )
+ print tcal
diff --git a/foundation.gnome.org/vote/2012/rules.wml b/foundation.gnome.org/vote/2012/rules.wml
new file mode 100644
index 0000000..4c40c0b
--- /dev/null
+++ b/foundation.gnome.org/vote/2012/rules.wml
@@ -0,0 +1,144 @@
+
+
+
+
+
+ Rules & Timeline for the GNOME Foundation 2012 Elections
+
+ Elections Rules
+
+
+
+
+ Timeline
+
+
+
+
+
diff --git a/foundation.gnome.org/vote/2012/timeline.ics b/foundation.gnome.org/vote/2012/timeline.ics
new file mode 100644
index 0000000..e75e2ab
--- /dev/null
+++ b/foundation.gnome.org/vote/2012/timeline.ics
@@ -0,0 +1,79 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+METHOD:PUBLISH
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:20110504T161927Z-98567@xbox
+DTSTART;VALUE=DATE:20120507
+DTEND;VALUE=DATE:20120508
+DESCRIPTION:If you are a member of the GNOME Foundation and are interested
+ in running for election\, you may nominate yourself by sending an e-mail
+ to foundation-announce@gnome.org with your name\, e-mail address\, corpora
+ te affiliation (if any)\, and a description of why you'd like to serve\, b
+ efore 2012-05-20 (23:59 UTC).\n You should also send a summary of your
+ candidacy announcement (75 words or less) to elections@gnome.org. If you
+ are not yet a GNOME Foundation member and would like to stand for election
+ \, you must first apply for membership and be accepted to be eligible to r
+ un. (You may\, however\, announce your candidacy prior to formal acceptanc
+ e of your application\; should your application not be accepted\, you will
+ not be included in the list of candidates.)\n
+SUMMARY:Announcements and list of candidates opens
+END:VEVENT
+BEGIN:VEVENT
+UID:20110504T161927Z-2533@xbox
+DTSTART;VALUE=DATE:20120520
+DTEND;VALUE=DATE:20120521
+DESCRIPTION:If you are a member of the GNOME Foundation and are interested
+ in running for election\, you may nominate yourself by sending an e-mail
+ to foundation-announce@gnome.org with your name\, e-mail address\, corpora
+ te affiliation (if any)\, and a description of why you'd like to serve\, b
+ efore 2012-05-20 (23:59 UTC).\n You should also send a summary of your
+ candidacy announcement (75 words or less) to elections@gnome.org. If you
+ are not yet a GNOME Foundation member and would like to stand for election
+ \, you must first apply for membership and be accepted to be eligible to r
+ un. (You may\, however\, announce your candidacy prior to formal acceptanc
+ e of your application\; should your application not be accepted\, you will
+ not be included in the list of candidates.)\n
+SUMMARY:List of candidates closed
+END:VEVENT
+BEGIN:VEVENT
+UID:20110504T161927Z-67367@xbox
+DTSTART;VALUE=DATE:20120523
+DTEND;VALUE=DATE:20120524
+DESCRIPTION:You may now start to send your questions to the candidates
+SUMMARY:List of candidates announced
+END:VEVENT
+BEGIN:VEVENT
+UID:20110504T161927Z-36748@xbox
+DTSTART;VALUE=DATE:20120527
+DTEND;VALUE=DATE:20120528
+DESCRIPTION:Please read your email and follow these instructions and submi
+ t your vote by 2012-06-10
+SUMMARY:Instructions to vote are sent
+END:VEVENT
+BEGIN:VEVENT
+UID:20110504T161927Z-82792@xbox
+DTSTART;VALUE=DATE:20120610
+DTEND;VALUE=DATE:20120611
+DESCRIPTION:Preliminary results are announced on 2012-06-12
+SUMMARY:Votes must be returned
+END:VEVENT
+BEGIN:VEVENT
+UID:20110504T161927Z-79881@xbox
+DTSTART;VALUE=DATE:20120612
+DTEND;VALUE=DATE:20120613
+DESCRIPTION:The preliminary results can be challenged until 2012-06-19
+SUMMARY:Preliminary results are announced
+END:VEVENT
+BEGIN:VEVENT
+UID:20110504T161927Z-71057@xbox
+DTSTART;VALUE=DATE:20120619
+DTEND;VALUE=DATE:20120620
+DESCRIPTION:If there weren't any challenges\, preliminary results are vali
+ d
+SUMMARY:Challenges to the results closed
+END:VEVENT
+X-WR-TIMEZONE:UTC
+END:VCALENDAR
+
diff --git a/foundation.gnome.org/vote/2012/voting-instructions.txt b/foundation.gnome.org/vote/2012/voting-instructions.txt
new file mode 100644
index 0000000..e5028d8
--- /dev/null
+++ b/foundation.gnome.org/vote/2012/voting-instructions.txt
@@ -0,0 +1,35 @@
+tobiasmue@gnome.org
+GNOME Foundation Board election - voting instructions
+
+Dear