[Libreoffice-commits] voting.git: 10 commits - configure.in include/add-header.xsl include/evilsedhack vote/2016-mc vote/2017-board vote/include vote/index.wml vote/Makefile.am

Florian Effenberger floeff at documentfoundation.org
Mon Dec 4 16:15:20 UTC 2017


 configure.in                            |    2 
 include/add-header.xsl                  |   12 -
 include/evilsedhack                     |   12 -
 vote/2016-mc/Makefile.am                |   14 +
 vote/2016-mc/candidates.wml             |  176 ++++++++++++++++++++++
 vote/2016-mc/index.wml                  |   58 +++++++
 vote/2016-mc/mkical.py                  |  252 +++++++++++++++++++++++++++++++
 vote/2016-mc/rules.wml                  |   58 +++++++
 vote/2016-mc/shuffle.js                 |    8 +
 vote/2016-mc/timeline.ics               |   71 ++++++++
 vote/2016-mc/voting-instructions.txt    |   38 ++++
 vote/2017-board/Makefile.am             |   14 +
 vote/2017-board/candidates.wml          |  163 ++++++++++++++++++++
 vote/2017-board/index.wml               |   57 +++++++
 vote/2017-board/mkical.py               |  253 ++++++++++++++++++++++++++++++++
 vote/2017-board/rules.wml               |  122 +++++++++++++++
 vote/2017-board/shuffle.js              |    8 +
 vote/2017-board/voting-instructions.txt |   40 +++++
 vote/Makefile.am                        |    2 
 vote/include/step3-confirm.php          |    3 
 vote/index.wml                          |    2 
 21 files changed, 1351 insertions(+), 14 deletions(-)

New commits:
commit 6354c4c489cc36ef92d0f3208baacf7f950c03c1
Author: Florian Effenberger <floeff at documentfoundation.org>
Date:   Mon Dec 4 16:02:00 2017 +0000

    corrected date of duty, as discussed with Gabriele

diff --git a/vote/2017-board/rules.wml b/vote/2017-board/rules.wml
index a938cff..5ad27df 100644
--- a/vote/2017-board/rules.wml
+++ b/vote/2017-board/rules.wml
@@ -26,12 +26,12 @@
       <li>
 As per § 7 II of our statues, the Board's term lasts two years. The
 current board started its duty on February 18, 2016. Therefore, the old
-board remains in charge until the end of Sunday, February 18, 2018, so the new
-board will be in charge the day after that, which is Monday, February 19, 2018.
+board remains in charge until the end of February 17, 2018, so the new
+board will be in charge the day after that, which is February 18, 2018.
       </li>
 
       <li>
-That upcoming term will then (regularly) end on Tuesday, February 18,
+That upcoming term will then (regularly) end on February 17,
 2020, so the next elections of the Board of Directors will take place
 before.
      </li>
commit babcf1908a2155b61e0174268da67ad4ef71c091
Author: Florian Effenberger <floeff at documentfoundation.org>
Date:   Thu Nov 30 09:41:13 2017 +0000

    replaced HTTP by HTTPS and updated favicon before

diff --git a/include/add-header.xsl b/include/add-header.xsl
index 51b5a5b..509f618 100644
--- a/include/add-header.xsl
+++ b/include/add-header.xsl
@@ -52,14 +52,14 @@
           </div>
           <table>
             <tr>
-              <td><a href="http://www.documentfoundation.org/privacy">Privacy Policy</a> | <a href="http://www.documentfoundation.org/imprint">Impressum (Legal Info)</a> | Copyright information: Unless otherwise specified, all text
-     and images on this website are licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
-              Attribution-Share Alike 3.0 License</a>. This site is based on the <a href="http://www.gnome.org/">GNOME Foundation</a> election system, whose textual content is itself available under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons
+              <td><a href="https://www.documentfoundation.org/privacy">Privacy Policy</a> | <a href="https://www.documentfoundation.org/imprint">Impressum (Legal Info)</a> | Copyright information: Unless otherwise specified, all text
+     and images on this website are licensed under the <a rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
+              Attribution-Share Alike 3.0 License</a>. This site is based on the <a href="https://www.gnome.org/">GNOME Foundation</a> election system, whose textual content is itself available under a <a rel="license" href="https://creativecommons.org/licenses/by/3.0/">Creative Commons
               Attribution 3.0 License</a>, and the underlying voting code, which is available under GPLv2+. This does not include the source code of LibreOffice, which is licensed under the GNU Lesser General
-     Public License (<a href="http://www.libreoffice.org/download/license/">Mozilla Public License v2.0</a>).<br/>
+     Public License (<a href="https://www.libreoffice.org/download/license/">Mozilla Public License v2.0</a>).<br/>
      "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to
      international copyright laws. The use of these therefore is subject to our
-     <a href="http://wiki.documentfoundation.org/TradeMark_Policy">trademark policy</a>.
+     <a href="https://wiki.documentfoundation.org/TradeMark_Policy">trademark policy</a>.
   </td>
             </tr>
           </table>
diff --git a/include/evilsedhack b/include/evilsedhack
index def12b2..d902ffd 100755
--- a/include/evilsedhack
+++ b/include/evilsedhack
@@ -11,14 +11,14 @@ cat <<-FOOT
           </div>
           <table>
             <tr>
-              <td><a href="http://www.documentfoundation.org/privacy">Privacy Policy</a> | <a href="http://www.documentfoundation.org/imprint">Impressum (Legal Info)</a> | Copyright information: Unless otherwise specified, all text
-     and images on this website are licensed under the <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
-     Attribution-Share Alike 3.0 License</a>. This site is based on the <a href="http://www.gnome.org/">GNOME Foundation</a> election system, whose textual content is itself available under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons
+              <td><a href="https://www.documentfoundation.org/privacy">Privacy Policy</a> | <a href="https://www.documentfoundation.org/imprint">Impressum (Legal Info)</a> | Copyright information: Unless otherwise specified, all text
+     and images on this website are licensed under the <a rel="license" href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons
+     Attribution-Share Alike 3.0 License</a>. This site is based on the <a href="https://www.gnome.org/">GNOME Foundation</a> election system, whose textual content is itself available under a <a rel="license" href="https://creativecommons.org/licenses/by/3.0/">Creative Commons
               Attribution 3.0 License</a>, and the underlying voting code, which is available under GPLv2+. This does not include the source code of LibreOffice, which is licensed under the GNU Lesser General
-     Public License (<a href="http://www.libreoffice.org/download/license/">Mozilla Public License v2.0</a>).<br/>
+     Public License (<a href="https://www.libreoffice.org/download/license/">Mozilla Public License v2.0</a>).<br/>
      "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to
      international copyright laws. The use of these therefore is subject to our
-     <a href="http://wiki.documentfoundation.org/TradeMark_Policy">trademark policy</a>.
+     <a href="https://wiki.documentfoundation.org/TradeMark_Policy">trademark policy</a>.
   </td>
             </tr>
           </table>
commit 3f2cdff8753859802a1ade9c14bba56272fd2982
Author: Florian Effenberger <floeff at documentfoundation.org>
Date:   Thu Nov 30 09:39:29 2017 +0000

    2017 board elections added

diff --git a/vote/index.wml b/vote/index.wml
index 00d9413..5ba1df6 100644
--- a/vote/index.wml
+++ b/vote/index.wml
@@ -43,6 +43,7 @@
       <li><a href="2014-mc/">Material from the 2014 Membership Committee Elections</a></li>
       <li><a href="2015-board/">Material from the 2015 Board of Directors elections</a></li>
       <li><a href="2016-mc/">Material from the 2016 Membership Committee Elections</a></li>
+      <li><a href="2017-board/">Material from the 2017 Board of Directors elections</a></li>
     </ul>
 
 <!-- Do not close the body or html tag because we still add stuff to the footer -->
commit 08264ec126ce2ff7d71d7b775efcf70af1007919
Author: Florian Effenberger <floeff at documentfoundation.org>
Date:   Thu Nov 30 09:35:50 2017 +0000

    updated candidates and voting instructions, deleted unused timeline.ics file

diff --git a/vote/2017-board/candidates.wml b/vote/2017-board/candidates.wml
index 7cc923a..bf379aa 100644
--- a/vote/2017-board/candidates.wml
+++ b/vote/2017-board/candidates.wml
@@ -45,7 +45,102 @@
 
     <h2>Candidates for The Document Foundation Board of Directors</h2>
 
-    <p>Will be announced after the nomination phase has ended</p>
+    <p>In random order:</p>
+
+    <ol>
+<li><strong>Cor Nouws</strong><br />
+             Affiliation: <em>Nou&Off</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04010.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04010.html</a>
+             <blockquote>
+With (growing) involvement in various places, it feels like a good moment to serve on the board of our community; to me: an interesting and challenging environment; people with many backgrounds, from different situations and locations. The joy we have in our contributions and how we can help each other to do maybe even better, in directing skills for creating great products, means a lot to me.
+             </blockquote>
+          </li>
+<li><strong>Jan Holešovský</strong><br />
+             Affiliation: <em>Collabora</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04029.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04029.html</a>
+             <blockquote>
+As a long-time contributor to LibreOffice, I would like to continue serving in the Board to help make decisions that support doers in their work, and that lead to having more people involved in the project. I can offer my experience from cross-team work, and from the last two years in the Board. I am deeply committed to LibreOffice and its success.
+             </blockquote>
+          </li>
+<li><strong>Franklin Weng</strong><br />
+             Affiliation: <em>Software Liberty Association Taiwan</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04032.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04032.html</a>
+             <blockquote>
+If I'm elected as a member of BoD, firstly I'll do my best to be the bridge between the community and Asian countries, and then I'll also focus on communicating with people and marketing ODF and LibreOffice to governments of different countries.  Besides, I hope to make the products more friendly to Asian C/J/K people in the aspect of UI/UX.
+             </blockquote>
+          </li>
+<li><strong>Björn Michaelsen</strong><br />
+             Affiliation: <em>unaffilated</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04034.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04034.html</a>
+             <blockquote>
+I bring lot of experience from prior work on TDFs governance and am an unaffiliated contributor to LibreOffice. I think the key to the success of LibreOffice is in the project and seeking growth for it by improving the experience for contributors and raising the visibility of our community and the opportunities for contribution.
+             </blockquote>
+          </li>
+<li><strong>Simon Phipps</strong><br />
+             Affiliation: <em>unaffiliated</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04036.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04036.html</a>
+             <blockquote>
+I've been involved with the LibreOffice project in some way since the OpenOffice.org launch in 2000. I still believe LibreOffice is one of software freedom movement's most important projects. I have previously served both as Membership Chair and and as a Director and have extensive business experience which I have used to TDF's advantage. Now independent, I'd be honoured to serve again; my priority will be the new challenges of the cloud era.
+             </blockquote>
+          </li>
+<li><strong>Michael Meeks</strong><br />
+             Affiliation: <em>Collabora</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04037.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04037.html</a>
+             <blockquote>
+I'd love to serve you again on the board: as a FLOSS advocate, with passion for LibreOffice, deep TDF board knowledge, lots of generic business experience: legal, budgeting, interviewing, management, yet also eager to keep LibreOffice fun and free. I've a long history of contribution to different FLOSS communities in various ways, am currently betting the business on LibreOffice and its success, but also want to help growing our volunteer participation.
+             </blockquote>
+          </li>
+<li><strong>Osvaldo Gervasi</strong><br />
+             Affiliation: <em>The University of Perugia, Italy</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04039.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04039.html</a>
+             <blockquote>
+I want to run for a seat in the next BoD after two years of the exciting experience as Director, to have the chance to further contribute to the project. In particular I want to promote LibreOffice among University students, in particular Engineers and Computer Scientists in order to let them approach the development of such a great software with the help of TDF, removing the barriers that they may encounter and facilitating their work.
+             </blockquote>
+          </li>
+<li><strong>Eike Rathke</strong><br />
+             Affiliation: <em>Red Hat, Inc.</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04040.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04040.html</a>
+             <blockquote>
+I, Eike Rathke, candidate for a seat on the Board of Directors of The Document Foundation. I am a LibreOffice core code contributor, working full time on the code base employed by Red Hat, Inc. I have been around with the project and TDF since 2011. I want TDF to grow and continue to be a prosperous community that creates and maintains the framework and conditions for a successful LibreOffice development in all its aspects.
+             </blockquote>
+          </li>
+<li><strong>Marina Latini</strong><br />
+             Affiliation: <em>Studio Storti Srl</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04041.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04041.html</a>
+             <blockquote>
+In the last 2 years, I’ve been honoured to serve in TDF BoD. We have done a lot and to achieve our purpose we can do much more. I will put all the gained experience in order to make our community more inclusive and open, lowering the entry barrier and avoiding exclusion. Freedom and inclusivity are the keys of a successful community and I would see a TDF inspired by these values.
+             </blockquote>
+          </li>
+<li><strong>Eric Ficheux</strong><br />
+             Affiliation: <em>Nantes Métropole</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04043.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04043.html</a>
+             <blockquote>
+I'm standing for a seat at the TDF Board of Directors for the first time. I believe in the LibreOffice project, in the community and in the power of our Free Software model. I will commit to do my best to help the project tackle the UX and Cloud challenges, to help grow the user and contributor base and make our Free software model better known, understood and supported.
+             </blockquote>
+          </li>
+<li><strong>Uwe Altmann</strong><br />
+             Affiliation: <em>unaffiliated</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04045.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04045.html</a>
+             <blockquote>
+I, Uwe Altmann, candidate for a seat on the Board of Directors of The Document Foundation. I have been around with the project and TDF since the early beginning, mostly in german community and QA for the Mac version. Actually I’m more in the marketing trying to start a process to discuss a vision of TDFs future. Being more an administrative guy than a coder I would like to foster the TDF as organization.
+             </blockquote>
+          </li>
+<li><strong>Daniel Armando Rodriguez</strong><br />
+             Affiliation: <em>unaffiliated</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04046.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04046.html</a>
+             <blockquote>
+If I result chosen as a BoD member my goal is to get more hispanic people involved into the project on a regular basis. I commit myself to give my best effort for the benefit of the project and to work hard to put a regional conference in the map.
+             </blockquote>
+          </li>
+<li><strong>Thorsten Behrens</strong><br />
+             Affiliation: <em>CIB software GmbH</em><br />
+             Full statement at <a href="https://listarchives.documentfoundation.org/www/board-discuss/msg04047.html">https://listarchives.documentfoundation.org/www/board-discuss/msg04047.html</a>
+             <blockquote>
+I'm leading a team of LibreOffice developers at CIB, and am a long-time TDF contributor to both code and organisation. Serving in the current board as a director, I would like to offer my continued help for the next two years. Things I promise to do: improve & professionalize organisation; grow & diversify contribution; keep things fun, fair & sustainable; and help with the largely-German administrative grunt work.
+             </blockquote>
+          </li>
+
+    </ol>
 
     <h2>Additional Elections-related Information</h2>
 
diff --git a/vote/2017-board/timeline.ics b/vote/2017-board/timeline.ics
deleted file mode 100644
index 3068f1c..0000000
--- a/vote/2017-board/timeline.ics
+++ /dev/null
@@ -1,72 +0,0 @@
-30
-BEGIN:VCALENDAR
-VERSION:2.0
-CALSCALE:GREGORIAN
-METHOD:PUBLISH
-PRODID:-//PYVOBJECT//NONSGML Version 1//EN
-BEGIN:VEVENT
-UID:20171127T153026Z-64985 at vm200
-DTSTART;VALUE=DATE:20171019
-DTEND;VALUE=DATE:20171020
-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 2017-11-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:20171127T153026Z-80218 at vm200
-DTSTART;VALUE=DATE:20171127
-DTEND;VALUE=DATE:20171128
-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 2017-11-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:20171127T153026Z-64756 at vm200
-DTSTART;VALUE=DATE:20171128
-DTEND;VALUE=DATE:20171129
-DESCRIPTION:You may now start to send your questions to the candidates
-SUMMARY:List of candidates announced
-END:VEVENT
-BEGIN:VEVENT
-UID:20171127T153026Z-25968 at vm200
-DTSTART;VALUE=DATE:20171205
-DTEND;VALUE=DATE:20171206
-DESCRIPTION:Please read your email and follow these instructions and submi
- t your vote by 2017-12-12
-SUMMARY:Instructions to vote are sent
-END:VEVENT
-BEGIN:VEVENT
-UID:20171127T153026Z-18131 at vm200
-DTSTART;VALUE=DATE:20171212
-DTEND;VALUE=DATE:20171213
-DESCRIPTION:Preliminary results are announced on 2017-12-13
-SUMMARY:Votes must be returned
-END:VEVENT
-BEGIN:VEVENT
-UID:20171127T153026Z-5280 at vm200
-DTSTART;VALUE=DATE:20171213
-DTEND;VALUE=DATE:20171214
-DESCRIPTION:The preliminary results can be challenged until 2017-12-18
-SUMMARY:Preliminary results are announced
-END:VEVENT
-BEGIN:VEVENT
-UID:20171127T153026Z-870 at vm200
-DTSTART;VALUE=DATE:20171218
-DTEND;VALUE=DATE:20171219
-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/2017-board/voting-instructions.txt b/vote/2017-board/voting-instructions.txt
index 9b0e451..430b9d2 100644
--- a/vote/2017-board/voting-instructions.txt
+++ b/vote/2017-board/voting-instructions.txt
@@ -6,8 +6,9 @@ Dear $member,
 The election of The Document Foundation Board of Directors will soon
 be open.
 
-Voting will run from 2017-12-05, 00:00 CET/UTC+1 until
-2017-12-12, 24:00 CET/UTC+1.
+Voting will run
+from 2017-12-05, 00:00 CET/UTC+1 (i.e. beginning of the day 05)
+until 2017-12-12, 24:00 CET/UTC+1 (i.e. end of the day 12).
 
 To vote, please go to
 https://elections.documentfoundation.org/vote.php?election_id=9
@@ -26,10 +27,10 @@ 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.
+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!
 
commit 56bde491ef5b97ee2f3c393dea15d6c628da23a8
Author: Florian Effenberger <floeff at documentfoundation.org>
Date:   Thu Nov 30 09:35:04 2017 +0000

    last year's name shuffling script, to present list of candidates in random order

diff --git a/vote/2017-board/shuffle.js b/vote/2017-board/shuffle.js
new file mode 100644
index 0000000..49a939a
--- /dev/null
+++ b/vote/2017-board/shuffle.js
@@ -0,0 +1,8 @@
+window.onload = shuffle;
+
+function shuffle() {
+    var ol = document.querySelector('ol');
+    for (var i = ol.children.length; i >= 0; i--) {
+        ol.appendChild(ol.children[Math.random() * i | 0]);
+    }
+}
commit 291973a4ddceb988b4027516db35ae0c7c8f7a69
Author: Florian Effenberger <floeff at documentfoundation.org>
Date:   Thu Nov 30 09:34:30 2017 +0000

    2017 board elections created

diff --git a/vote/2017-board/Makefile.am b/vote/2017-board/Makefile.am
new file mode 100644
index 0000000..56f3ab5
--- /dev/null
+++ b/vote/2017-board/Makefile.am
@@ -0,0 +1,14 @@
+SUBDIRS =
+
+urlpath = /vote/2017-board
+
+page_SCRIPTS = \
+	index.html \
+	candidates.html\
+	rules.html
+
+page_DATA = \
+	timeline.ics
+	mkical.py
+
+include $(top_srcdir)/rules.common
diff --git a/vote/2017-board/candidates.wml b/vote/2017-board/candidates.wml
new file mode 100644
index 0000000..7cc923a
--- /dev/null
+++ b/vote/2017-board/candidates.wml
@@ -0,0 +1,68 @@
+<?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 2017 Board of Directors Election Candidates</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+  </head>
+
+  <body>
+    <h1>Candidates for The Document Foundation 2017 Board of Directors Election</h1>
+
+    <p>
+      Below you will find a list of candidates who are running for
+      The Document 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
+      <a href="https://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 the Board of Directors must
+    perform. This <a href="../overview.html">overview</a> 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
+    might require a significant amount of time and effort and the
+    ability to work and communicate with other people, companies, and
+    the media. It is a good idea to strive for a well-balanced board
+    consisting of people with various backgrounds, skills, and
+    perspectives.  </p>
+
+    <p>
+      Additional elections details can be found in the
+      <a href="https://www.documentfoundation.org/satzung.pdf">Document Foundation statutes</a> (and the non-binding
+      <a href="https://www.documentfoundation.org/statutes.pdf">English version</a>).
+    </p>
+
+    <p>
+      If you have any questions, please send them to either
+      <a href="mailto:board-discuss@documentfoundation.org">board-discuss@documentfoundation.org</a> (public list)
+      or in private to the Membership Committee at <a
+      href="mailto:elections@documentfoundation.org">elections@documentfoundation.org</a>.
+    </p>
+
+    <h2>Candidates for The Document Foundation Board of Directors</h2>
+
+    <p>Will be announced after the nomination phase has ended</p>
+
+    <h2>Additional Elections-related Information</h2>
+
+    <p>
+      Note, that according to the
+      <a href="https://www.documentfoundation.org/satzung.pdf">Document Foundation statutes</a> (and the non-binding
+      <a href="https://www.documentfoundation.org/statutes.pdf">English version</a>),
+      there is a 1/3 maximum on the number of people affiliated with any one company that can be on the board or
+      amongst the deputies. For details refer to the statutes. You will be able to vote for up to 10 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>
+    <script src="shuffle.js" />
+  </body>
+</html>
diff --git a/vote/2017-board/index.wml b/vote/2017-board/index.wml
new file mode 100644
index 0000000..43e5192
--- /dev/null
+++ b/vote/2017-board/index.wml
@@ -0,0 +1,57 @@
+<?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 2017 Board of Directors Election</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  </head>
+
+  <body>
+
+    <h1>The Document Foundation 2017 Board of Directors Election</h1>
+
+    <p>
+      The Document Foundation Membership currently elects the Board of
+      Directors every other year. Any member can
+      nominate themself to run in the elections. The overall elections
+      process is overseen by the Membership Committee,
+      which can be reached
+      at <a href="mailto:elections@documentfoundation.org">elections@documentfoundation.org</a>.
+    </p>
+
+    <p>
+      The elections results from the 2017 Board of Directors elections
+      will be archived here for public access.
+    </p>
+
+    <h2>2017 Elections Materials:</h2>
+    <ul>
+        <li>
+            <a href="../results.php?election_id=9">Detailed election results</a>
+        </li>
+        <li>
+            <a href="../votes.php?election_id=9">List of all votes</a>
+        </li>
+        <li>
+            <a href="../vote.php?election_id=9">Interface to vote</a>
+        </li>
+        <li>
+            <a href="candidates.html">List of candidates for Board of Directors</a>
+        </li>
+
+        <li>
+            <a href="https://www.documentfoundation.org/governance/members/">List of registered voters</a>
+        </li>
+
+        <li>
+            <a href="rules.html">Elections Rules and Timeline</a>
+        </li>
+
+        <li>
+            <a href="../overview.html">Overview of the Board of Directors role</a>
+        </li>
+    </ul>
+
+  </body>
+</html>
diff --git a/vote/2017-board/mkical.py b/vote/2017-board/mkical.py
new file mode 100755
index 0000000..9be841a
--- /dev/null
+++ b/vote/2017-board/mkical.py
@@ -0,0 +1,253 @@
+#!/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 = 2017
+CANDIDATES_OPENED_DATE    = (YEAR, 10, 19)
+CANDIDATES_CLOSED_DATE    = (YEAR, 11, 27)
+CANDIDATES_ANNOUNCED_DATE = (YEAR, 11, 28)
+VOTING_OPENED_DATE        = (YEAR, 12, 05)
+VOTING_CLOSED_DATE        = (YEAR, 12, 12)
+PRELIMINARY_RESULTS_DATE  = (YEAR, 12, 13)
+CHALLENGE_CLOSED_DATE     = (YEAR, 12, 18)
+
+
+
+### 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,
+                'warning': logging.WARNING, 'error': logging.ERROR,
+                'critical': logging.CRITICAL}.get(options.loglevel, logging.WARNING)
+    print loglevel
+    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/2017-board/rules.wml b/vote/2017-board/rules.wml
new file mode 100644
index 0000000..a938cff
--- /dev/null
+++ b/vote/2017-board/rules.wml
@@ -0,0 +1,122 @@
+<?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 2017 Board of Directors Election Rules</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  </head>
+
+  <body>
+
+    <h1>Rules & Timeline for The Document Foundation 2017 Board of Directors Election</h1>
+
+    <h2>Elections Rules</h2>
+
+    <ol>
+      <li>
+      See the <a href="https://www.documentfoundation.org/satzung.pdf">Document Foundation statutes</a> (and the non-binding
+      <a href="https://www.documentfoundation.org/statutes.pdf">English version</a>)
+      for general rules.
+      </li>
+      <li>
+	There are 7 board positions and 3 deputy roles that are to be filled during these elections.
+      </li>
+
+      <li>
+As per § 7 II of our statues, the Board's term lasts two years. The
+current board started its duty on February 18, 2016. Therefore, the old
+board remains in charge until the end of Sunday, February 18, 2018, so the new
+board will be in charge the day after that, which is Monday, February 19, 2018.
+      </li>
+
+      <li>
+That upcoming term will then (regularly) end on Tuesday, February 18,
+2020, so the next elections of the Board of Directors will take place
+before.
+     </li>
+
+      <li>
+As per § 6 III, only members of the Board of Trustees of The Document
+Foundation, as well as current members of any of its bodies, are
+eligible to be elected into the Board of Directors, and the election is
+overseen by the Membership Committee (§ 7 II).
+      </li>
+
+      <li>
+The active electoral right is reserved to those who have been members of
+the Board of Trustees before this announcement (§ 7 II).
+      </li>
+
+      <li>
+§ 6 III also states that members of the Board of Directors or their
+deputies may not be members of the Membership Committee and vice versa.
+This means that current members of the Membership Committee are eligible
+to be elected, but with the acceptance of their new role they lose their
+current role in the MC. For clarification, they would have to step down
+from the Membership Committee, with effect no later than to the
+beginning of the new term of the Board of Directors, the minute before
+accepting to become a member of the Board of Directors.
+      </li>
+
+      <li>
+There is one more notable limitation: Per § 8 IV of the statutes, a
+maximum of 1/3 members of the Board of Directors is allowed to work on
+an employment basis for the same company, organization, entities,
+affiliates or subdivisions.
+      </li>
+
+      <li>
+Nomination of candidates fulfilling the above requirements, as well as
+self nomination is welcome. In total, at least seven Board of Directors
+members are required, and given there are enough candidates, up to three
+deputies can be elected (§ 7 II). As deputies are on duty quite often,
+we encourage many candidates to participate.
+      </li>
+
+      <li>
+Re-election of current members of the Board of Directors is explicitly
+permitted (§ 7 II).
+      </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 Membership Committee is
+        responsible for counting the votes.
+      </li>
+    </ol>
+
+    <h2>Timeline</h2>
+    <ul>
+      <li>
+2017-10-19: announcement of the elections; and start of the nomination phase
+      </li>
+      <li>
+2017-11-27, 24:00 CET/UTC+1: end of the nomination phase (one week before the election starts, as per § 7 II)
+      </li>
+      <li>
+2017-12-05, 00:00 CET/UTC+1: official start of the elections (at least 45 days after announcement of the elections, as per § 7 II)
+      </li>
+      <li>
+2017-12-12, 24:00 CET/UTC+1: end of the elections
+      </li>
+      <li>
+2017-12-13: announcement of the preliminary results and acknowledgement of role
+      </li>
+      <li>
+2017-12-14, 00:00 CET/UTC+1: start of the challenging phase
+      </li>
+      <li>
+2017-12-18, 24:00 CET/UTC+1: end of the challenging phase
+      </li>
+      <li>
+afterwards: official announcement of the final results
+      </li>
+    </ul>
+
+  </body>
+</html>
diff --git a/vote/2017-board/timeline.ics b/vote/2017-board/timeline.ics
new file mode 100644
index 0000000..3068f1c
--- /dev/null
+++ b/vote/2017-board/timeline.ics
@@ -0,0 +1,72 @@
+30
+BEGIN:VCALENDAR
+VERSION:2.0
+CALSCALE:GREGORIAN
+METHOD:PUBLISH
+PRODID:-//PYVOBJECT//NONSGML Version 1//EN
+BEGIN:VEVENT
+UID:20171127T153026Z-64985 at vm200
+DTSTART;VALUE=DATE:20171019
+DTEND;VALUE=DATE:20171020
+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 2017-11-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:20171127T153026Z-80218 at vm200
+DTSTART;VALUE=DATE:20171127
+DTEND;VALUE=DATE:20171128
+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 2017-11-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:20171127T153026Z-64756 at vm200
+DTSTART;VALUE=DATE:20171128
+DTEND;VALUE=DATE:20171129
+DESCRIPTION:You may now start to send your questions to the candidates
+SUMMARY:List of candidates announced
+END:VEVENT
+BEGIN:VEVENT
+UID:20171127T153026Z-25968 at vm200
+DTSTART;VALUE=DATE:20171205
+DTEND;VALUE=DATE:20171206
+DESCRIPTION:Please read your email and follow these instructions and submi
+ t your vote by 2017-12-12
+SUMMARY:Instructions to vote are sent
+END:VEVENT
+BEGIN:VEVENT
+UID:20171127T153026Z-18131 at vm200
+DTSTART;VALUE=DATE:20171212
+DTEND;VALUE=DATE:20171213
+DESCRIPTION:Preliminary results are announced on 2017-12-13
+SUMMARY:Votes must be returned
+END:VEVENT
+BEGIN:VEVENT
+UID:20171127T153026Z-5280 at vm200
+DTSTART;VALUE=DATE:20171213
+DTEND;VALUE=DATE:20171214
+DESCRIPTION:The preliminary results can be challenged until 2017-12-18
+SUMMARY:Preliminary results are announced
+END:VEVENT
+BEGIN:VEVENT
+UID:20171127T153026Z-870 at vm200
+DTSTART;VALUE=DATE:20171218
+DTEND;VALUE=DATE:20171219
+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/2017-board/voting-instructions.txt b/vote/2017-board/voting-instructions.txt
new file mode 100644
index 0000000..9b0e451
--- /dev/null
+++ b/vote/2017-board/voting-instructions.txt
@@ -0,0 +1,39 @@
+elections at documentfoundation.org
+Gabriele Ponzo <elections at documentfoundation.org>
+Your Document Foundation 2017 Board Elections Voting Token
+Dear $member,
+
+The election of The Document Foundation Board of Directors will soon
+be open.
+
+Voting will run from 2017-12-05, 00:00 CET/UTC+1 until
+2017-12-12, 24:00 CET/UTC+1.
+
+To vote, please go to
+https://elections.documentfoundation.org/vote.php?election_id=9
+and follow the instructions there.
+
+A list of candidates and their reasons for running is available at
+https://elections.documentfoundation.org/2017-board/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,
+  Gabriele Ponzo
+  Chairman of the Membership Committee
+  The Document Foundation
commit fe59b57f12f5f97d071ea5e7aa76e6b42b8ba3e4
Author: Florian Effenberger <floeff at documentfoundation.org>
Date:   Tue Nov 28 07:41:17 2017 +0000

    added 2017-board

diff --git a/configure.in b/configure.in
index 14e038c..32ccfab 100644
--- a/configure.in
+++ b/configure.in
@@ -22,4 +22,6 @@ vote/2013-confpoll/Makefile
 vote/2013-board/Makefile
 vote/2014-mc/Makefile
 vote/2015-board/Makefile
+vote/2016-mc/Makefile
+vote/2017-board/Makefile
 ])
diff --git a/vote/Makefile.am b/vote/Makefile.am
index eb9d3f4..9f930a6 100644
--- a/vote/Makefile.am
+++ b/vote/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = include 2011 2012-confpoll 2012-mc 2013-confpoll 2013-board 2014-mc
+SUBDIRS = include 2011 2012-confpoll 2012-mc 2013-confpoll 2013-board 2014-mc 2015-board 2016-mc 2017-board
 
 urlpath = /vote
  
commit 4dece65dc68e3c76789d7741d19fcd30334a9ad5
Author: Florian Effenberger <floeff at documentfoundation.org>
Date:   Tue Nov 28 07:40:34 2017 +0000

    set number of total seats available

diff --git a/vote/include/step2-choose.php b/vote/include/step2-choose.php
index 01fdcae..5cbf78b 100644
--- a/vote/include/step2-choose.php
+++ b/vote/include/step2-choose.php
@@ -14,7 +14,7 @@ function step2_do () {
   $result .= "Once you are happy with the order, submit your vote. You will have ";
   $result .= "the chance to review and confirm your ballot on the next page.</p>";
 
-  $result .= "<p>You can vote for up to 9 candidates of your choice, with no restrictions. ";
+  $result .= "<p>You can vote for up to 10 candidates of your choice, with no restrictions. ";
   $result .= "Your vote will be counted for your first choice candidate as ";
   $result .= "long as the candidate is still in the race, and when the candidate is eliminated, your ";
   $result .= "vote will transfer to the next preference candidate still in the ";
commit fba3a2a82099022af788fba9e9cf27ff32f2764a
Author: Florian Effenberger <floeff at documentfoundation.org>
Date:   Mon Nov 27 14:37:54 2017 +0000

    updated page headers to have favicon in VHost instead of main TDF site

diff --git a/include/add-header.xsl b/include/add-header.xsl
index 32eb3c0..51b5a5b 100644
--- a/include/add-header.xsl
+++ b/include/add-header.xsl
@@ -20,7 +20,7 @@
       <link rel="stylesheet" type="text/css" href="//www.documentfoundation.org/themes/tdf/css/layout.css?m=1300292397"/>
       <link rel="stylesheet" type="text/css" href="//www.documentfoundation.org/themes/tdf/css/typography.css?m=1292094211"/>
       <link rel="stylesheet" type="text/css" href="//www.documentfoundation.org/themes/tdf/css/form.css?m=1305575430"/>
-      <link rel="icon" href="//www.documentfoundation.org/favicon.ico"/>
+      <link rel="icon" href="//elections.documentfoundation.org/favicon.ico"/>
       <xsl:copy-of select="@*"/>
       <xsl:apply-templates select="node()"/>
     </head>
diff --git a/include/evilsedhack b/include/evilsedhack
index 04e0a6d..def12b2 100755
--- a/include/evilsedhack
+++ b/include/evilsedhack
@@ -2,7 +2,7 @@
 PAGE=$1
 ROOT=$2
 
-sed "s,<head>,<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><link rel=\"stylesheet\" type=\"text/css\" href=\"//www.documentfoundation.org/themes/tdf/css/layout.css?m=1300292397\"/><link rel=\"stylesheet\" type=\"text/css\" href=\"//www.documentfoundation.org/themes/tdf/css/typography.css?m=1292094211\"/><link rel=\"stylesheet\" type=\"text/css\" href=\"//www.documentfoundation.org/themes/tdf/css/form.css?m=1305575430\"/><link rel=\"icon\" href=\"//www.documentfoundation.org/favicon.ico\"/>,i;s,<body>,<body xmlns=\"//www.w3.org/1999/xhtml\"><div id=\"BgContainer\"><div id=\"Container\"><div id=\"Header\"><h1>The Document Foundation</h1><p>The home of LibreOffice</p></div><div class=\"clear\"><!-- --></div><div id=\"Layout\">,i;s,<\/body>/,//,g" $PAGE
+sed "s,<head>,<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" /><link rel=\"stylesheet\" type=\"text/css\" href=\"//www.documentfoundation.org/themes/tdf/css/layout.css?m=1300292397\"/><link rel=\"stylesheet\" type=\"text/css\" href=\"//www.documentfoundation.org/themes/tdf/css/typography.css?m=1292094211\"/><link rel=\"stylesheet\" type=\"text/css\" href=\"//www.documentfoundation.org/themes/tdf/css/form.css?m=1305575430\"/><link rel=\"icon\" href=\"//elections.documentfoundation.org/favicon.ico\"/>,i;s,<body>,<body xmlns=\"//www.w3.org/1999/xhtml\"><div id=\"BgContainer\"><div id=\"Container\"><div id=\"Header\"><h1>The Document Foundation</h1><p>The home of LibreOffice</p></div><div class=\"clear\"><!-- --></div><div id=\"Layout\">,i;s,<\/body>/,//,g" $PAGE
 
 cat <<-FOOT
         <div id="Footer">
commit 1576cc5e4f59a93313738bff8baf1ec223590bef
Author: sdfsdf <sdfsdf at sfsdfsdf>
Date:   Sat Sep 10 13:25:36 2016 +0000

    new voting

diff --git a/vote/2016-mc/Makefile.am b/vote/2016-mc/Makefile.am
new file mode 100644
index 0000000..b7b182f
--- /dev/null
+++ b/vote/2016-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/2016-mc/candidates.wml b/vote/2016-mc/candidates.wml
new file mode 100644
index 0000000..6759614
--- /dev/null
+++ b/vote/2016-mc/candidates.wml
@@ -0,0 +1,176 @@
+<?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 2016 Membership Committee Election Candidates</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+  </head>
+
+  <body>
+    <h1>Candidates for The Document Foundation 2016 Membership Committee Election</h1>
+
+    <p>
+Below you will find a list of candidates who are running for 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 at documentfoundation.org</a>. 
+    </p>
+
+    <p> When deciding whom 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/satzung.pdf">Document Foundation statutes</a> (and the non-binding
+      <a href="http://www.documentfoundation.org/statutes.pdf">English version</a>).
+    </p>
+
+    <p>
+      If you have any questions, please send them to either
+      <a href="mailto:board-discuss at documentfoundation.org">board-discuss at documentfoundation.org</a> (public list)
+      or in private to the Board of Directors at <a
+      href="mailto:elections at documentfoundation.org">elections at documentfoundation.org</a>.
+    </p>
+
+    <h2>Candidates for The Document Foundation Membership Committee</h2>
+
+    <p>In random order:</p>
+
+    <ol>
+        <li><strong>Miklos Vajna</strong><br />
+           Affiliation: <em>Collabora</em><br />
+           <blockquote>
+           I am hacking on LibreOffice since its birth, contributing features and
+fixes mostly around Writer. I would like to be part of the Membership
+Committee to ensure that every aspect of the TDF community is
+represented in the committee, including developers. Given my background,
+I'm happy to help the work of the committee also at a technical level
+(git, gerrit issues).
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Charles-H. Schulz</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I would like to continue my work inside the Membership Committee for another term. I therefore declare my candidacy for the Membership Committee. I have been among the founders of the Document Foundation, a former board member and these days I'm mostly active in social networking and website edition for the LibreOffice project. 
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Gabriele Ponzo</strong><br />
+           Affiliation: <em> external collaborations with Studio Storti</em><br />
+           <blockquote>
+I would like to continue my work inside the Membership Committee for another term. I therefore declare my candidacy for the Membership Committee. I've been part of LibreUmbria and LibreDifesa projects as well as of other migrations as TDF Certified Trainer and Migration expert. It's been an interesting and challenging experience to be part of current MC and I'd like to continue serving our great community and Foundation.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Andras Timar</strong><br />
+           Affiliation: <em>Collabora</em><br />
+           <blockquote>
+           I would like to continue my work inside the Membership Committee for another term. I therefore declare my candidacy for the Membership Committee. (I have been working as a deputy member of Membership Committee since 2014.) I have been involved in OpenOffice.org, then LibreOffice for 14 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>Noel John Grandin</strong><br />
+           Affiliation: <em>Peralex Electronics, Collabora UK</em><br />
+           <blockquote>
+           Running for membership committee, 3+ years of contributing my own special brand of disruption to the LibreOffice codebase, 20+ years of experience in the software industry. 30+ years of programming.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Katarina Behrens</strong><br />
+           Affiliation: <em>CIB</em><br />
+           <blockquote>
+           I'm a long-time LibreOffice code contributor, working for CIB as a professional 
+LibreOffice bug squasher. I'd like to put my connection with both code and design community (together 
+with the knowledge of multiple languages) to good use in the Membership 
+Committee. By serving there, I'd love to help building a diverse community, 
+where everyone regardless of their gender, ethnicity or disability has their 
+say and where both code and non-code contributions are equally valued.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Antonio Faccioli</strong><br />
+           Affiliation: <em>Studio Storti</em><br />
+           <blockquote>
+           I would like to make available to all members of the Foundation my passion and my determination to consolidate and bring more people to the community LibreOffice. I think a large and cohesive group of members can only strengthen the project.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Cor Nouws</strong><br />
+           Affiliation: <em>Nou&Off</em><br />
+           <blockquote>
+           I would like to be a candidate for the Membership Committee (MC) with
+the upcoming elections. Since quite early (say 2004  ) I'm an active member of this community
+with some emphasis on QA, marketing but also contributions to UX, l10n
+and tiny bits for development. I help in the Dutch language community
+and run a small company dedicated to make organizations happy and smart
+users of LibreOffice. The great variety in our community inspires me;
+therefore as member of the MC (too), I try to help building a diverse,
+strong community.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Klaus-Jürgen Weghorn</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>           
+I am a civil engineer and urban planner and therefore more familiar with the user side than with the development. For LibO I'm working e.g on some marketing stuff like the presentations and logos for our conferences and the badges for our Month of LibreOffice.
+Currently I'm a member of the Membership Committee and would like to continue my work there.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Stephan Bergmann</strong><br />
+           Affiliation: <em>Red Hat, Inc.</em><br />
+           <blockquote>
+           I've been around the LibreOffice (and formerly StarOffice/OpenOffice.org) ecosystem for nearly two decades now.  And still feel excited about the enthusiasm of the LO community in my daily work.  So I'd like to give back some of that enthusiasm by serving on the Membership Committee.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Gustavo Buzzatti Pacheco</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+           I'm from Porto Alegre, Brazil. I have been working in our Community since 2003, mainly in the Brazilian project in many areas (documentation, digital inclusion, marketing, extensions,...). Currently, I'm the hand behind the @opendocument account on Twitter where I spread the news about LibreOffice, OpenDocument and Free Software around the World. I think our Membership Committee should continue to represent our global and plural project, so I would like to contribute with my colaborative experience.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+        <li><strong>Ellen Pape</strong><br />
+           Affiliation: <em>none</em><br />
+           <blockquote>
+I am an instructor in IT business, teacher in a distance learning school and
+social media manager. My collaboration with Open Office startet, when I made
+the membership administration for FrODeV, the entity that helped to create
+the TDF. Since then I represented Libre Office in various opportunities.
+Last was the Didacta Fair in Cologne. Under
+https://blog.documentfoundation.org/blog/2016/03/02/libreoffice-didacta/ you
+can see our report (in English) and download in German, Spanish and French).
+Also I am taking care of the german account of Libre Office in Facebook,
+Twitter and Google+. I would like to contribute in the membership committee.
+           </blockquote>
+            <!-- Verified Member -->
+        </li>
+    </ol>
+
+
+
+    <h2>Additional elections-related Information</h2>
+
+    <p>
+      Note, that according to the
+      <a href="http://www.documentfoundation.org/satzung.pdf">Document Foundation statutes</a> (and the non-binding
+      <a href="http://www.documentfoundation.org/statutes.pdf">English version</a>),
+      there is a 1/3 maximum on the number of people affiliated with any one company that can be on the committee or
+      amongst the deputies. For details refer to the statutes. You will be able to vote for up to 9 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>
+    <script src="shuffle.js" />
+  </body>
+</html>
diff --git a/vote/2016-mc/index.wml b/vote/2016-mc/index.wml
new file mode 100644
index 0000000..682f75e
--- /dev/null
+++ b/vote/2016-mc/index.wml
@@ -0,0 +1,58 @@
+<?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 2016 Membership Committee Election</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  </head>
+
+  <body>
+
+    <h1>The Document Foundation 2016 Membership Committee Election</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 2016 Membership Committee elections 
+      will be archived here for public access.
+    </p>
+
+    <h2>2016 Membership Committee Elections Materials:</h2>
+    <ul>
+        <li>
+            <a href="../results.php?election_id=8">Detailed election results</a>
+        </li>
+        <li>
+            <a href="../votes.php?election_id=8">List of all votes</a>
+        </li>
+        <li>
+            <a href="../vote.php?election_id=8">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/governance/members/">List of registered voters</a>
+        </li>
+    
+        <li>
+            <a href="rules.html">Elections Rules and Timeline</a>
+        </li>
+    
+        <li>
+            <a href="../overview-mc.html">Overview of the Membership Committee work</a>
+        </li>
+    </ul>
+
+  </body>
+</html>
diff --git a/vote/2016-mc/mkical.py b/vote/2016-mc/mkical.py
new file mode 100755
index 0000000..9c8b784
--- /dev/null
+++ b/vote/2016-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 = 2016
+CANDIDATES_OPENED_DATE    = (YEAR, 7, 25) # In 2012, begin earlier in May
+CANDIDATES_CLOSED_DATE    = (YEAR, 8, 31)
+CANDIDATES_ANNOUNCED_DATE = (YEAR, 9,  8)
+VOTING_OPENED_DATE        = (YEAR, 9,  8)
+VOTING_CLOSED_DATE        = (YEAR, 9, 14)
+PRELIMINARY_RESULTS_DATE  = (YEAR, 9, 15)
+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 board-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/2016-mc/rules.wml b/vote/2016-mc/rules.wml
new file mode 100644
index 0000000..64368bb
--- /dev/null
+++ b/vote/2016-mc/rules.wml
@@ -0,0 +1,58 @@
+<?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 2016 Membership Committee Election Rules</title>
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+  </head>
+
+  <body>
+
+    <h1>Rules & Timeline for The Document Foundation 2016 Membership Committee Election</h1>
+
+    <h2>Election Rules</h2>
+
+    <ol>
+      <li>
+      See the <a href="http://www.documentfoundation.org/satzung.pdf">Document Foundation statutes</a> (and the non-binding
+      <a href="http://www.documentfoundation.org/statutes.pdf">English version</a>)
+      for general rules.
+      </li>
+      <li>
+	There are 5 committee seats and 4 deputy roles that are to be filled during these elections.
+      </li>
+<li>As per § 12 II of our statues, the Membership Committee's term lasts two years. The current committee started its duty on September 19, 2014. Therefore, the old committee remains in charge until the end of September 18, 2016, so the new committee will be in charge the day after that, which is September 19, 2016.</li>
+
+<li>As per § 6 III, only members of the Board of Trustees of The Document Foundation, as well as current members of any of its bodies, are eligible to be elected into the Membership Committee, and the election is overseen by the Board of Directors (§ 12 II).</li>
+
+<li>The active electoral right is reserved to those who have been members of the Board of Trustees before this announcement (§ 12 II).</li>
+
+<li>§ 6 III also states that members of the Board of Directors or their deputies may not be members of the Membership Committee and vice versa. This means that current members of the Board of Directors are eligible to be elected, but given that with the acceptance of their new role they lose their current role in the board, they would have to step down from the Board of Directors the minute before accepting to become a member of the Membership Committee.</li>
+
+<li>There is one more notable limitation: Per § 8 IV of the statutes, a maximum of 1/3 members of the Membership Committee is allowed to work on an employment basis for the same company, organization, entities, affiliates or subdivisions.</li>
+
+<li>Nomination of candidates fulfilling the above requirements, as well as self nomination is welcome. In total, at least five Membership Committee members are required, and given there are enough candidates, up to four deputies can be elected (§ 12 II).</li>
+
+<li>Re-election of current members of the Membership Committee is explicitly permitted (§ 12 II).</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>All discussion related to the elections should be held on board-discuss at documentfoundation.org. Members are invited to ask questions to one or all candidates on that list.</li>
+    </ol>
+
+    <h2>Timeline</h2>
+    <ul>
+    <li>1. 2016-07-25: announcement of the elections; and start of the nomination phase</li>
+    <li>2. 2016-08-31, 24:00 CET/UTC+2: end of the nomination phase (one week before the election starts, as per § 12 II)</li>
+    <li>3. 2016-09-08, 00:00 CET/UTC+2: official start of the elections (at least 45 days after #1, as per § 12 II)</li>
+    <li>4. 2016-09-14, 24:00 CET/UTC+2: end of the elections</li>
+    <li>5. 2016-09-15: announcement of the preliminary results; and start of the challenging phase</li>
+    <li>6. 2016-09-17, 24:00 CET/UTC+2: end of the challenging phase</li>
+    <li>7. 2016-09-18: official announcement of the final results</li>
+    <li>8. 2016-09-19: new Membership Committee officially in charge</li>
+    </ul>
+  </body>
+</html>
diff --git a/vote/2016-mc/shuffle.js b/vote/2016-mc/shuffle.js
new file mode 100644
index 0000000..49a939a
--- /dev/null
+++ b/vote/2016-mc/shuffle.js
@@ -0,0 +1,8 @@
+window.onload = shuffle;
+
+function shuffle() {
+    var ol = document.querySelector('ol');
+    for (var i = ol.children.length; i >= 0; i--) {
+        ol.appendChild(ol.children[Math.random() * i | 0]);
+    }
+}
diff --git a/vote/2016-mc/timeline.ics b/vote/2016-mc/timeline.ics
new file mode 100644
index 0000000..033d07c
--- /dev/null
+++ b/vote/2016-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/2016-mc/voting-instructions.txt b/vote/2016-mc/voting-instructions.txt
new file mode 100644
index 0000000..4f41b10
--- /dev/null
+++ b/vote/2016-mc/voting-instructions.txt
@@ -0,0 +1,38 @@
+elections at documentfoundation.org
+elections at documentfoundation.org
+Your Document Foundation 2016 Membership Committee Elections Voting Token
+Dear $member,
+
+The election of The Document Foundation Membership Committee will soon
+be open.
+
+Voting will run from 2016-09-08, 00:00 CET/UTC+2
+until 2016-09-14, 24:00 CET/UTC+2.
+
+To vote, please go to
+https://elections.documentfoundation.org/vote.php?election_id=8
+and follow the instructions there.
+
+A list of candidates and their reasons for running is available at
+https://elections.documentfoundation.org/2016-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/include/step2-choose.php b/vote/include/step2-choose.php
index 5cbf78b..01fdcae 100644
--- a/vote/include/step2-choose.php
+++ b/vote/include/step2-choose.php
@@ -14,7 +14,7 @@ function step2_do () {
   $result .= "Once you are happy with the order, submit your vote. You will have ";
   $result .= "the chance to review and confirm your ballot on the next page.</p>";
 
-  $result .= "<p>You can vote for up to 10 candidates of your choice, with no restrictions. ";
+  $result .= "<p>You can vote for up to 9 candidates of your choice, with no restrictions. ";
   $result .= "Your vote will be counted for your first choice candidate as ";
   $result .= "long as the candidate is still in the race, and when the candidate is eliminated, your ";
   $result .= "vote will transfer to the next preference candidate still in the ";
diff --git a/vote/include/step3-confirm.php b/vote/include/step3-confirm.php
index 560d424..6e4e179 100644
--- a/vote/include/step3-confirm.php
+++ b/vote/include/step3-confirm.php
@@ -41,7 +41,8 @@ function step3_do () {
   }
 
   $result .= "<p>To confirm this vote, please continue to the next step. ";
-  $result .= "To modify your choice, hit the \"Back\" button in your browser.</p>\n";
+  /*$result .= "To modify your choice, hit the \"Back\" button in your browser.</p>\n";*/
+  $result .= "To modify your choice, please close your browser and start the voting process again.</p>\n";
 
   return $result;
 }
diff --git a/vote/index.wml b/vote/index.wml
index 1bc3e23..00d9413 100644
--- a/vote/index.wml
+++ b/vote/index.wml
@@ -42,6 +42,7 @@
       <li><a href="2013-board/">Material from the 2013 board of directors elections</a></li>
       <li><a href="2014-mc/">Material from the 2014 Membership Committee Elections</a></li>
       <li><a href="2015-board/">Material from the 2015 Board of Directors elections</a></li>
+      <li><a href="2016-mc/">Material from the 2016 Membership Committee Elections</a></li>
     </ul>
 
 <!-- Do not close the body or html tag because we still add stuff to the footer -->


More information about the Libreoffice-commits mailing list