[Libreoffice-commits] voting.git: configure.in vote/2014-mc vote/Makefile.am

Thorsten Behrens thb at documentfoundation.org
Wed Sep 3 14:22:25 PDT 2014


 configure.in                         |    1 
 vote/2014-mc/Makefile.am             |   14 +
 vote/2014-mc/candidates.wml          |  249 ++++++++++++++++++++++++++++++++++
 vote/2014-mc/index.wml               |   60 ++++++++
 vote/2014-mc/mkical.py               |  252 +++++++++++++++++++++++++++++++++++
 vote/2014-mc/rules.wml               |  131 ++++++++++++++++++
 vote/2014-mc/timeline.ics            |   71 +++++++++
 vote/2014-mc/voting-instructions.txt |   39 +++++
 vote/Makefile.am                     |    2 
 9 files changed, 818 insertions(+), 1 deletion(-)

New commits:
commit 79b19823a36a7c1dcd96dd89cf354342d731a8a7
Author: Thorsten Behrens <thb at documentfoundation.org>
Date:   Wed Sep 3 23:21:21 2014 +0200

    Create 2014 membership committee election pages.

diff --git a/configure.in b/configure.in
index 5567fea..decfd68 100644
--- a/configure.in
+++ b/configure.in
@@ -20,4 +20,5 @@ vote/2012-confpoll/Makefile
 vote/2012-mc/Makefile
 vote/2013-confpoll/Makefile
 vote/2013-board/Makefile
+vote/2014-mc/Makefile
 ])
diff --git a/vote/2014-mc/Makefile.am b/vote/2014-mc/Makefile.am
new file mode 100644
index 0000000..b7b182f
--- /dev/null
+++ b/vote/2014-mc/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS =
+
+urlpath = /vote/2014-mc
+ 
+page_SCRIPTS = \
+	index.html \
+	candidates.html\
+	rules.html 
+
+page_DATA = \
+	timeline.ics
+	mkical.py
+
+include $(top_srcdir)/rules.common
diff --git a/vote/2014-mc/candidates.wml b/vote/2014-mc/candidates.wml
new file mode 100644
index 0000000..354fc25
--- /dev/null
+++ b/vote/2014-mc/candidates.wml
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+
+  <head>
+    <title>The Document Foundation 2014 Membership Committee Elections Candidates</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+  </head>
+
+  <body>
+    <h1>Candidates for The Document Foundation 2014 Membership Committee Elections</h1>
+
+    <p>
+      Below you will find a list of candidates who are running for the
+      The Document Foundation Membership Committee. 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
+      <a href="http://listarchives.documentfoundation.org/www/board-discuss/">board-discuss@documentfoundation.org</a>.
+    </p>
+
+    <p> When deciding who you should vote for, please carefully
+    consider the various tasks Membership Committee seat holders must
+    perform. This <a href="../overview-mc.html">overview</a> may be
+    helpful. Keep in mind that the committee will decide on granting
+    membership, and renewal thereof, and also plays an important role
+    as a counter-balance to the board of directors. It is a good idea
+    to strive for a well-balanced committee, consisting of people with
+    various backgrounds, skills, and perspectives. </p>
+
+    <p>
+      Additional elections details can be found in the
+      <a href="http://www.documentfoundation.org/statutes.pdf">Document Foundation Statutes</a>.
+    </p>
+
+    <p>
+      If you have any questions, please send them to either
+      <a href="http://listarchives.documentfoundation.org/www/board-discuss/">board-discuss@documentfoundation.org</a>
+      (public list) or to us at <a
+      href="mailto:elections@documentfoundation.org">elections@documentfoundation.org</a> (private).
+    </p>
+
+    <h2>Candidates for The Document Foundation Membership Committee</h2>
+
+geraldg at libreoffice.org
+
+    <ol>
+        <li><strong>Zeki Bildirici</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I hereby announce my candidacy for the upcoming Membership Committee
+elections. I've been contributing to LibreOffice since the beginning
+of the project on various areas like marketing, localization,
+documentation and Q-A also i've been working on to build an active
+Turkish LibreOffice community from scratch. The reason that i announce
+my candidacy is to take such duties and serve the Foundation as a
+diligent member.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Cédric Bosdonnat</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I took part in the LibreOffice project since its first public day, and
+was already in the OOo community before since 2005. I served as Google
+Summer of Code administrator for LibreOffice during several years and
+thus help students come to the project. I wish to propose my humble
+knowledge of the LibreOffice ecosystem to serve in the membership
+committee.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Sigrid Carrera</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I want to work with the Membership Committee because I believe that I could
+be helpful there. I have a long experience with working in the OOo project
+and now the LibreOffice project. I have the time and the wish to serve in
+this position, to give something back to this great community.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Jesús Corrius Llavina</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I have been a member of the LibreOffice project (and from its
+ancestor) from day one, starting to work in the legacy project in
+2001. I have been a member of the Board of Directors, developer,
+translator, community manager and also helped organizing events and
+bring students to the project.  I think my knowledge of how many
+things work can be useful in the membership commitee.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>David Emmerich Jourdain</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I really would appreciate to help TDF in the Membership Committee, because
+I have a good overview about TDF and LibreOffice, and what can we do to
+spread the use of the LibreOffice. I'm with LibreOffice and TDF since the
+beginning, and I helped also with OOo previously. I'm developer,
+translator, research team coordinator and lecturer, always promoting FLOSS.
+I really will be honored to help TDF and the LibreOffice community in this
+activity.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Jean-Baptiste Faure</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+Why: because the job must be done and I think I can help.
+In the OOo time I was the lead of the French Native-Lang project since
+2008 and the lead of the FR QA-team. I am member of the Foundation since
+April 2011. Currently I am maintening the FR website, moderator of the
+FR mailing-lists and do bugs triaging.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Gerald Geib</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I have been working in the project since the Version 2.0 of OpenOffice. And I
+started at the first official days of LibreOffice.
+I began with translations of the documentation and the UI in German. At the
+moment I do some user support and QA. Now I want to do more in the project
+again, so I candidate for the membership committee.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Jan Holešovský</strong><br />
+           Affiliation: <em>Collabora</em><br />
+           <blockquote>
+I'd like to serve in the Membership Committee, because I have a good
+overview of what TDF and LibreOffice is, and where it is heading. I am
+with LibreOffice from the very beginning, and was with OOo previously;
+now for more than 11 years. I am primarily a developer, but reach out to
+the other groups too – I've been translating to Czech, work with the
+designers, and in marketing. I am a regular GSoC mentor.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Leif Lyngby Lodahl</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I'm current member of the committee and would be proud to continue my work.
+I have been working with localization of Open Office since 2005 and
+was one of the founding members of The Document Foundation. I am one
+of the non-developers that operates mainly with business development,
+project management and education.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>László Németh</strong><br />
+           Affiliation: <em>Csevej Bt.</em><br />
+           <blockquote>
+As a volunteer, I am a long-time contributor of LibreOffice
+project. Knowing the development and the community, also getting
+positive feedback and encouragement from the other community members,
+I would like to help also the community work of LibreOffice in the
+next two years, as a committee member.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Cor Nouws</strong><br />
+           Affiliation: <em>Nou&Off</em><br />
+           <blockquote>
+I like to spend some of my time for the Membership Committee.  From
+the past years I know pretty well how it works and how important it is
+to both encourage people to apply for membership and also to look at
+applications very well.  I am with LibreOffice from the very
+beginning, and was with OOo before.  Main activities are in QA,
+marketing, and our local Dutch language community.  My daily work is
+that of director of a small Dutch firm delivering support and
+consultancy for LibreOffice.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Gabriele Ponzo</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I'd like to become a member of the committee to slowly gain a role
+inside TDF and better contribute to the project.
+I've been part of the LibreUmbria project and I hope to be soon a certified
+trainer and participate to more migrations.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Charles-H. Schulz</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I am interested in serving at the Membership Committee of the Document
+Foundation. I have been one of the co-founders of the LibreOffice
+project and used to be a contributor of the OpenOffice.org project.
+These days I am mostly involved in comms and marketing for the
+community.
+I will be happy to help the community and the foundation members by
+participating to the committee' s work and sessions.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Andras Timar</strong><br />
+           Affiliation: <em>Collabora</em><br />
+           <blockquote>
+In the upcoming Membership Committee Election, please vote for me,
+the ideal candidate. I have been involved in OpenOffice.org, then
+LibreOffice for 12 years, I know a lot of people from the community,
+and I have a good overview of development and localization. I have
+time and desire to serve in this position.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Klaus-Jürgen Weghorn</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I want to work with the MC because I'm a volunteer with no nexus to
+professional developer or support stuff but with users' normal
+experiences and expectations in professional and private way.
+I'm an official member of the Board of Trustees since mid 2011,
+working for LibO almost in Design, De-community and DE-documentation,
+Website and Wiki.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+    </ol>
+
+
+
+    <h2>Additional Elections-related Information</h2>
+
+    <p>
+      Note, that according to the regulations around avoidance of a
+      conflict of interest in <a
+      href="http://www.documentfoundation.org/statutes.pdf">§8 (4) of the Statutes</a>,
+      there is a 2-person maximum on the number of people affiliated
+      with any one company that can be on the committee and their deputies:
+      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.
+    </p>
+
+    <p>
+      If you have any futher question, please consult the
+      <a href="rules.html">Rules for this election</a> or write to
+      <a href="mailto:elections at documentfoundation.org">elections at documentfoundation.org</a>.
+    </p>
+
+  </body>
+</html>
diff --git a/vote/2014-mc/index.wml b/vote/2014-mc/index.wml
new file mode 100644
index 0000000..5225636
--- /dev/null
+++ b/vote/2014-mc/index.wml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+
+  <head>
+    <title>The Document Foundation 2014 Membership Committee Elections</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <meta name="author" content="Thorsten Behrens" />
+  </head>
+
+  <body>
+
+    <h1>The Document Foundation 2014 Membership Committee Elections</h1>
+
+    <p>
+      The Document Foundation Membership currently elects the
+      Membership Committee during autumn of every other year. Any
+      member can nominate
+      themself to run in the elections. The overall elections process
+      is overseen by the Board of Directors, which can
+      be reached at <a
+      href="mailto:elections@documentfoundation.org">elections@documentfoundation.org</a>.
+    </p>
+
+    <p>
+      The elections results from the 2014 Membership Committee elections 
+      will be archived here for public access.
+    </p>
+
+    <h2>2014 Membership Committee Elections Materials:</h2>
+    <ul>
+        <li>
+            <a href="../results.php?election_id=6">Detailed election results</a>
+        </li>
+        <li>
+            <a href="../votes.php?election_id=6">List of all votes</a>
+        </li>
+        <li>
+            <a href="../vote.php?election_id=6">Interface to vote</a>
+        </li>
+        <li>
+            <a href="candidates.html">List of candidates for the Membership Committee</a>
+        </li>
+
+        <li>
+            <a href="http://www.documentfoundation.org/foundation/members/">List of registered voters</a>
+        </li>
+    
+        <li>
+            <a href="rules.html">Elections Rules and Timeline</a> (webcal <a
+            href="webcal://elections.documentfoundation.org/voting/vote/2014-mc/timeline.ics">timeline</a>)
+        </li>
+    
+        <li>
+            <a href="../overview-mc.html">Overview of the Membership Committee work</a>
+        </li>
+    </ul>
+
+  </body>
+</html>
diff --git a/vote/2014-mc/mkical.py b/vote/2014-mc/mkical.py
new file mode 100755
index 0000000..18c6100
--- /dev/null
+++ b/vote/2014-mc/mkical.py
@@ -0,0 +1,252 @@
+#!/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 = 2014
+CANDIDATES_OPENED_DATE    = (YEAR, 7, 19) # In 2012, begin earlier in May
+CANDIDATES_CLOSED_DATE    = (YEAR, 8, 27)
+CANDIDATES_ANNOUNCED_DATE = (YEAR, 9,  4)
+VOTING_OPENED_DATE        = (YEAR, 9,  4)
+VOTING_CLOSED_DATE        = (YEAR, 9, 11)
+PRELIMINARY_RESULTS_DATE  = (YEAR, 9, 12)
+CHALLENGE_CLOSED_DATE     = (YEAR, 9, 17)
+
+
+
+### 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 Document Foundation and are interested 
+    in running for election, you may nominate yourself by sending an 
+    e-mail to elections at documentfoundation.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 discuss at documentfoundation.org. """) + '''
+    '''
+)
+
+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.WARNING, 'error': logging.ERROR,
+                'critical': logging.CRITICAL}.get(options.loglevel, logging.WARNING)
+    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/vote/2014-mc/rules.wml b/vote/2014-mc/rules.wml
new file mode 100644
index 0000000..6bea714
--- /dev/null
+++ b/vote/2014-mc/rules.wml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+
+  <head>
+    <title>The Document Foundation 2014 Membership Committee Elections Rules</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  </head>
+
+  <body>
+
+    <h1>Rules & Timeline for The Document Foundation 2014 Membership Committee Elections</h1>
+
+    <h2>Elections Rules</h2>
+
+    <ol>
+      <li>
+        See the <a href="http://www.documentfoundation.org/statutes.pdf">The Document
+        Foundation Statutes</a> §12, II for general rules.
+      </li>
+      <li>
+	There are 5 committee seats and 2 deputy roles that are to be filled during these elections.
+      </li>
+      <li>
+        <a href="http://www.documentfoundation.org/foundation/members/">Members</a> of The Document Foundation as of 2014-07-01
+        are eligible to vote in the elections. For future elections, anyone who has made a
+        contribution to The Document Foundation can apply for membership by completing the
+        <a href="http://www.documentfoundation.org/foundation/application-for-tdf-community-membership/">application</a>.
+      </li>
+      <li>
+        Any eligible voter is also eligible to be elected to the Membership Committee.
+        To announce your candidacy, send a message to
+        <a href="mailto:board-discuss@documentfoundation.org">board-discuss@documentfoundation.org</a>
+        with your full name, e-mail, corporate affiliation (if any), and a
+        description of your reasons for wanting to serve as a committee member.
+        Candidacies must be announced prior to 2014-08-27, 24:00 UTC+2.
+      </li>
+      <li>
+        All candidates should mail a summary of their candidacy announcement
+        (see previous rule) to
+        <a href="mailto:elections@documentfoundation.org">elections@documentfoundation.org</a>.
+        Summaries should be no more than 75 words of continuous text (i.e. no
+        bullet lists or multiple paragraphs) and must be received by the
+        nomination deadline given above.
+      </li>
+      <li>
+        All discussion related to the elections should be held on
+        <a href="mailto:board-discuss@documentfoundation.org">board-discuss@documentfoundation.org</a>.
+        Members are invited to ask questions to one or all candidates on that
+        list.
+      </li>
+      <li>
+      	Instructions explaining how to vote will be sent via e-mail to
+      	all eligible voters prior to the election, the voting itself
+      	will open at 2014-09-04, 00:00 UTC+2,
+      	and votes must be returned by 2014-09-11, 24:00 UTC+2.
+      </li>
+      <li>
+        Votes will be held confidential during the elections, but an
+        anonymized archive of all submitted votes will be made publicly
+        accessible at its conclusion.
+      </li>
+      <li>
+        The Document Foundation Board of Directors is
+        responsible for counting the votes.
+      </li>
+      <li>
+      There are five (5) committee, and two (2) additional deputy
+      seats to be filled during this election. Therefore a total of
+      seven (7) slots are available, and will be selected by a single
+      transferable vote system, seats filled in decreasing order of
+      preference. Should more than two of the top seven vote-getters
+      be affiliated with the same company, only the two with the most
+      votes will be considered elected. The term of office is two
+      years.
+      </li>
+      <li>
+        In the event of a tie for the final seat on the committee or the
+        final deputy slot, the Board of Directors will schedule
+        run-off elections as soon as possible.
+      </li>
+      <li>
+        The Board of Directors will announce preliminary results as soon as
+        possible after the elections close, along with instructions on how to
+        access the votes archive and how to independently verify the vote
+        count.
+      </li>
+      <li>
+        Any eligible voter may challenge the preliminary results by e-mailing
+        <a
+        href="mailto:elections@documentfoundation.org">elections@documentfoundation.org</a>
+        prior to 2014-09-17, 24:00 UTC+2.
+        Once any challenges have been resolved, the Board of Directors shall announce the final results.
+      </li>
+      <li>
+        Any questions regarding these procedures should be directed to the
+        Board of Directors by e-mail to <a
+        href="mailto:elections@documentfoundation.org">elections@documentfoundation.org</a>.
+      </li>
+    </ol>
+
+    <h2>Timeline</h2>
+    <ul>
+      <li>
+    2014-07-19: announcement of the elections (this e-mail); and start of the nomination phase
+      </li>
+      <li>
+    2014-08-27, 24:00 CET/UTC+2: end of the nomination phase
+      </li>
+      <li>
+    2014-09-04, 00:00 CET/UTC+2: official start of the elections
+      </li>
+      <li>
+    2014-09-11, 24:00 CET/UTC+2: end of the elections
+      </li>
+      <li>
+    2014-09-12: announcement of the preliminary results; and start of the challenging phase
+      </li>
+      <li>
+    2014-09-17, 24:00 CET/UTC+2: end of the challenging phase
+      </li>
+      <li>
+    2014-09-18: official announcement of the final results
+      </li>
+      <li>
+    2014-09-19: new Membership Committee officially in charge
+      </li>
+    </ul>
+
+  </body>
+</html>
diff --git a/vote/2014-mc/timeline.ics b/vote/2014-mc/timeline.ics
new file mode 100644
index 0000000..281b18d
--- /dev/null
+++ b/vote/2014-mc/timeline.ics
@@ -0,0 +1,71 @@
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+METHOD:PUBLISH
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:20140903T203120Z-39764 at thinkpad.bad.example
+DTSTART;VALUE=DATE:20140719
+DTEND;VALUE=DATE:20140720
+DESCRIPTION:If you are a member of The Document Foundation and are interes
+ ted in running for election\, you may nominate yourself by sending an e-ma
+ il to elections at documentfoundation.org with your name\, e-mail address\, c
+ orporate affiliation (if any)\, and a description of why you'd like to ser
+ ve\, before 2014-08-27 (23:59 UTC).\n     You should also send a summary o
+ f your candidacy announcement (75 words or less) to discuss at documentfounda
+ tion.org.\n    
+SUMMARY:Announcements and list of candidates opens
+END:VEVENT
+BEGIN:VEVENT
+UID:20140903T203120Z-54301 at thinkpad.bad.example
+DTSTART;VALUE=DATE:20140827
+DTEND;VALUE=DATE:20140828
+DESCRIPTION:If you are a member of The Document Foundation and are interes
+ ted in running for election\, you may nominate yourself by sending an e-ma
+ il to elections at documentfoundation.org with your name\, e-mail address\, c
+ orporate affiliation (if any)\, and a description of why you'd like to ser
+ ve\, before 2014-08-27 (23:59 UTC).\n     You should also send a summary o
+ f your candidacy announcement (75 words or less) to discuss at documentfounda
+ tion.org.\n    
+SUMMARY:List of candidates closed
+END:VEVENT
+BEGIN:VEVENT
+UID:20140903T203120Z-30891 at thinkpad.bad.example
+DTSTART;VALUE=DATE:20140904
+DTEND;VALUE=DATE:20140905
+DESCRIPTION:You may now start to send your questions to the candidates
+SUMMARY:List of candidates announced
+END:VEVENT
+BEGIN:VEVENT
+UID:20140903T203120Z-50351 at thinkpad.bad.example
+DTSTART;VALUE=DATE:20140904
+DTEND;VALUE=DATE:20140905
+DESCRIPTION:Please read your email and follow these instructions and submi
+ t your vote by 2014-09-11
+SUMMARY:Instructions to vote are sent
+END:VEVENT
+BEGIN:VEVENT
+UID:20140903T203120Z-84459 at thinkpad.bad.example
+DTSTART;VALUE=DATE:20140911
+DTEND;VALUE=DATE:20140912
+DESCRIPTION:Preliminary results are announced on 2014-09-12
+SUMMARY:Votes must be returned
+END:VEVENT
+BEGIN:VEVENT
+UID:20140903T203120Z-50923 at thinkpad.bad.example
+DTSTART;VALUE=DATE:20140912
+DTEND;VALUE=DATE:20140913
+DESCRIPTION:The preliminary results can be challenged until 2014-09-17
+SUMMARY:Preliminary results are announced
+END:VEVENT
+BEGIN:VEVENT
+UID:20140903T203120Z-36315 at thinkpad.bad.example
+DTSTART;VALUE=DATE:20140917
+DTEND;VALUE=DATE:20140918
+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/vote/2014-mc/voting-instructions.txt b/vote/2014-mc/voting-instructions.txt
new file mode 100644
index 0000000..e810d33
--- /dev/null
+++ b/vote/2014-mc/voting-instructions.txt
@@ -0,0 +1,39 @@
+info at documentfoundation.org
+thb at documentfoundation.org
+Your Document Foundation 2014 Membership Committee Voting Token
+
+Dear $member,
+
+The election of The Document Foundation Membership Committee will soon
+be open.
+
+Voting will run from 2014-09-04, 00:00 CEST/UTC+2 until 2014-09-11,
+24:00 CEST/UTC+2.
+
+To vote, please go to
+https://elections.documentfoundation.org/vote.php?election_id=6
+and follow the instructions there.
+
+A list of candidates and their reasons for running is available at
+https://elections.documentfoundation.org/2014-mc/candidates.html
+
+When instructed to do so, enter the following details:
+
+   E-mail: $email
+   Vote token: $token
+
+The election has 4 steps - first, you must identify yourself using the
+voting token above. Then select your preferred candidates in order of
+preference. A third step will show you your choice, and ask you to
+confirm or return to the previous step. Finally, after confirming your
+choice, a unique identifier will be given to you which will allow you to
+verify after the election that your vote was counted correctly. To ensure
+anonymity, no link will be kept between this token and your identifiers,
+so please keep this token safe. Once you have voted, you will not be able
+to vote again.
+
+Thank you for your vote!
+
+Regards,
+  Thorsten Behrens
+  On behalf of The Document Foundation Board of Directors
diff --git a/vote/Makefile.am b/vote/Makefile.am
index bc06dba..eb9d3f4 100644
--- a/vote/Makefile.am
+++ b/vote/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = include 2011 2012-confpoll 2012-mc 2013-confpoll 2013-board
+SUBDIRS = include 2011 2012-confpoll 2012-mc 2013-confpoll 2013-board 2014-mc
 
 urlpath = /vote
  


More information about the Libreoffice-commits mailing list