World Library  
Flag as Inappropriate
Email this Article
 

Schulze method

The Schulze method () is a voting system developed in 1997 by Markus Schulze that selects a single winner using votes that express preferences. The method can also be used to create a sorted list of winners. The Schulze method is also known as Schwartz Sequential Dropping (SSD), Cloneproof Schwartz Sequential Dropping (CSSD), the Beatpath Method, Beatpath Winner, Path Voting, and Path Winner.

The Schulze method is a Condorcet method, which means the following: if there is a candidate who is preferred over every other candidate in pairwise comparisons, then this candidate will be the winner when the Schulze method is applied.

The output of the Schulze method (defined below) gives an ordering of candidates. Therefore, if several positions are available, the method can be used for this purpose without modification, by letting the k top-ranked candidates win the k available seats. Furthermore, for proportional representation elections, a single transferable vote variant has been proposed.

The Schulze method is used by several organizations including Debian, Ubuntu, Gentoo, Software in the Public Interest, Free Software Foundation Europe, Pirate Party political parties and many others.

Contents

  • Description of the method 1
    • Ballot 1.1
    • Computation 1.2
  • Example 2
  • Implementation 3
  • Ties and alternative implementations 4
  • Satisfied and failed criteria 5
    • Satisfied criteria 5.1
    • Failed criteria 5.2
    • Comparison table 5.3
  • History 6
  • Users 7
  • Notes 8
  • External links 9

Description of the method

Ballot

The input to the Schulze method is the same as for other ranked single-winner election methods: each voter must furnish an ordered preference list on candidates where ties are allowed (a strict weak order).[1]

One typical way for voters to specify their preferences on a ballot (see right) is as follows. Each ballot lists all the candidates, and each voter ranks this list in order of preference using numbers: the voter places a '1' beside the most preferred candidate(s), a '2' beside the second-most preferred, and so forth. Each voter may optionally:

  • give the same preference to more than one candidate. This indicates that this voter is indifferent between these candidates.
  • use non-consecutive numbers to express preferences. This has no impact on the result of the elections, since only the order in which the candidates are ranked by the voter matters, and not the absolute numbers of the preferences.
  • keep candidates unranked. When a voter doesn't rank all candidates, then this is interpreted as if this voter (i) strictly prefers all ranked to all unranked candidates, and (ii) is indifferent among all unranked candidates.

Computation

Let d[V,W] be the number of voters who prefer candidate V to candidate W.

A path from candidate X to candidate Y of strength p is a sequence of candidates C(1),...,C(n) with the following properties:

  1. C(1) = X and C(n) = Y.
  2. For all i = 1,...,(n-1): d[C(i),C(i+1)] > d[C(i+1),C(i)].
  3. For all i = 1,...,(n-1): d[C(i),C(i+1)] \text{≥} p.

Let p[A,B], the strength of the strongest path from candidate A to candidate B, be the maximum value such that there is a path from candidate A to candidate B of that strength. If there is no path from candidate A to candidate B at all, then p[A,B] = 0.

Candidate D is better than candidate E if and only if p[D,E] > p[E,D].

Candidate D is a potential winner if and only if p[D,E] \text{≥} p[E,D] for every other candidate E.

It can be proven that p[X,Y] > p[Y,X] and p[Y,Z] > p[Z,Y] together imply p[X,Z] > p[Z,X].[1]:§4.1 Therefore, it is guaranteed (1) that the above definition of "better" really defines a transitive relation and (2) that there is always at least one candidate D with p[D,E] \text{≥} p[E,D] for every other candidate E.

Example

In the following example 45 voters rank 5 candidates.

  • 5 ACBED (meaning, 5 voters have order of preference: A > C > B > E > D)
  • 5 ADECB
  • 8 BEDAC
  • 3 CABED
  • 7 CAEBD
  • 2 CBADE
  • 7 DCEBA
  • 8 EBADC

The pairwise preferences have to be computed first. For example, when comparing A and B pairwise, there are 5+5+3+7=20 voters who prefer A to B, and 8+2+7+8=25 voters who prefer B to A. So d[A, B] = 20 and d[B, A] = 25. The full set of pairwise preferences is:

Directed graph labeled with pairwise preferences d[*, *]
Matrix of pairwise preferences
d[*,A] d[*,B] d[*,C] d[*,D] d[*,E]
d[A,*] 20 26 30 22
d[B,*] 25 16 33 18
d[C,*] 19 29 17 24
d[D,*] 15 12 28 14
d[E,*] 23 27 21 31

The cells for d[X, Y] have a light green background if d[X, Y] > d[Y, X], otherwise the background is light red. There is no undisputed winner by only looking at the pairwise differences here.

Now the strongest paths have to be identified. To help visualize the strongest paths, the set of pairwise preferences is depicted in the diagram on the right in the form of a directed graph. An arrow from the node representing a candidate X to the one representing a candidate Y is labelled with d[X, Y]. To avoid cluttering the diagram, an arrow has only been drawn from X to Y when d[X, Y] > d[Y, X] (i.e. the table cells with light green background), omitting the one in the opposite direction (the table cells with light red background).

One example of computing the strongest path strength is p[B, D] = 33: the strongest path from B to D is the direct path (B, D) which has strength 33. But when computing p[A, C], the strongest path from A to C is not the direct path (A, C) of strength 26, rather the strongest path is the indirect path (A, D, C) which has strength min(30, 28) = 28.The strength of a path is the strength of its weakest link.

For each pair of candidates X and Y, the following table shows the strongest path from candidate X to candidate Y in red, with the weakest link underlined.

Strongest paths
... to A ... to B ... to C ... to D ... to E
from A ...
A-(30)-D-(28)-C-(29)-B
A-(30)-D-(28)-C
A-(30)-D
A-(30)-D-(28)-C-(24)-E
from A ...
from B ...
B-(25)-A
B-(33)-D-(28)-C
B-(33)-D
B-(33)-D-(28)-C-(24)-E
from B ...
from C ...
C-(29)-B-(25)-A
C-(29)-B
C-(29)-B-(33)-D
C-(24)-E
from C ...
from D ...
D-(28)-C-(29)-B-(25)-A
D-(28)-C-(29)-B
D-(28)-C
D-(28)-C-(24)-E
from D ...
from E ...
E-(31)-D-(28)-C-(29)-B-(25)-A
E-(31)-D-(28)-C-(29)-B
E-(31)-D-(28)-C
E-(31)-D
from E ...
... to A ... to B ... to C ... to D ... to E
Strengths of the strongest paths
p[*,A] p[*,B] p[*,C] p[*,D] p[*,E]
p[A,*] 28 28 30 24
p[B,*] 25 28 33 24
p[C,*] 25 29 29 24
p[D,*] 25 28 28 24
p[E,*] 25 28 28 31

Now the output of the Schulze method can be determined. For example, when comparing A and B, since 28 = p[A,B] > p[B,A] = 25, for the Schulze method candidate A is better than candidate B. Another example is that 31 = p[E,D] > p[D,E] = 24, so candidate E is better than candidate D. Continuing in this way, the result is that the Schulze ranking is E > A > C > B > D, and E wins. In other words, E wins since p[E,X] ≥ p[X,E] for every other candidate X.

Implementation

The only difficult step in implementing the Schulze method is computing the strongest path strengths. However, this is a well-known problem in graph theory sometimes called the widest path problem. One simple way to compute the strengths therefore is a variant of the Floyd–Warshall algorithm. The following pseudocode illustrates the algorithm.

1 # Input: d[i,j], the number of voters who prefer candidate i to candidate j.
 2 # Output: p[i,j], the strength of the strongest path from candidate i to candidate j.
 3 
 4 for i from 1 to C
 5   for j from 1 to C
 6      if (i ≠ j) then
 7         if (d[i,j] > d[j,i]) then
 8            p[i,j] := d[i,j]
 9         else
10            p[i,j] := 0
11 
12 for i from 1 to C
13   for j from 1 to C
14      if (i ≠ j) then
15         for k from 1 to C
16            if (i ≠ k and j ≠ k) then
17               p[j,k] := max ( p[j,k], min ( p[j,i], p[i,k] ) )

This algorithm is efficient, and has running time proportional to C3 where C is the number of candidates. (This does not account for the running time of computing the d[*,*] values, which can be implemented in a straightforward way to take time proportional to C2 times the number of voters.)

Ties and alternative implementations

When allowing users to have ties in their preferences, the outcome of the Schulze method naturally depends on how these ties are interpreted in defining d[*,*]. Two natural choices are that d[A, B] represents either the number of voters who strictly prefer A to B (A>B), or the margin of (voters with A>B) minus (voters with B>A). But no matter how the ds are defined, the Schulze ranking has no cycles, and assuming the ds are unique it has no ties.[1]

Although ties in the Schulze ranking are unlikely,[2] they are possible. Schulze's original paper[1] proposed breaking ties in accordance with a voter selected at random, and iterating as needed.

An alternative, slower, way to describe the winner of the Schulze method is the following procedure:

  1. draw a complete directed graph with all candidates, and all possible edges between candidates
  2. iteratively [a] delete all candidates not in the Schwartz set (i.e. any candidate which cannot reach all others) and [b] delete the weakest link
  3. the winner is the last non-deleted candidate.

Satisfied and failed criteria

Satisfied criteria

The Schulze method satisfies the following criteria:

Failed criteria

Since the Schulze method satisfies the Condorcet criterion, it automatically fails the following criteria:

Likewise, since the Schulze method is not a dictatorship and agrees with unanimous votes, Arrow's Theorem implies it fails the criterion

The Schulze method also fails

Comparison table

The following table compares the Schulze method with other preferential single-winner election methods:

Comparison of voting systems
Monotonic Condorcet Majority Condorcet loser Majority loser Mutual majority Smith ISDA LIIA Clone independence Reversal symmetry Polynomial time Participation, Consistency Resolvability
Schulze Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes No Yes
Ranked pairs Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes
Copeland Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes No No
Kemeny-Young Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes No No Yes
Nanson No Yes Yes Yes Yes Yes Yes No No No Yes Yes No Yes
Baldwin No Yes Yes Yes Yes Yes Yes No No No No Yes No Yes
Instant-runoff voting No No Yes Yes Yes Yes No No No Yes No Yes No Yes
Borda Yes No No Yes Yes No No No No No Yes Yes Yes Yes
Bucklin Yes No Yes No Yes Yes No No No No No Yes No Yes
Coombs No No Yes Yes Yes Yes No No No No No Yes No Yes
MiniMax Yes Yes Yes No No No No No No No No Yes No Yes
Plurality Yes No Yes No No No No No No No No Yes Yes Yes
Anti-plurality Yes No No No Yes No No No No No No Yes Yes Yes
Contingent voting No No Yes Yes Yes No No No No No No Yes No Yes
Sri Lankan contingent voting No No Yes No No No No No No No No Yes No Yes
Supplementary voting No No Yes No No No No No No No No Yes No Yes
Dodgson No Yes Yes No No No No No No No No No No Yes

The main difference between the Schulze method and the ranked pairs method can be seen in this example:

Suppose the MinMax score of a set X of candidates is the strength of the strongest pairwise win of a candidate A ∉ X against a candidate B ∈ X. Then the Schulze method, but not Ranked Pairs, guarantees that the winner is always a candidate of the set with minimum MinMax score.[1]:§4.8 So, in some sense, the Schulze method minimizes the largest majority that has to be reversed when determining the winner.

On the other hand, Ranked Pairs minimizes the largest majority that has to be reversed to determine the order of finish, in the minlexmax sense. [4] In other words, when Ranked Pairs and the Schulze method produce different orders of finish, for the majorities on which the two orders of finish disagree, the Schulze order reverses a larger majority than the Ranked Pairs order.

History

The Schulze method was developed by Markus Schulze in 1997. It was first discussed in public mailing lists in 1997–1998[5] and in 2000.[6] Subsequently, Schulze method users included Software in the Public Interest (2003),[7] Debian (2003),[8] Gentoo (2005),[9] TopCoder (2005),[10] Wikimedia (2008),[11] KDE (2008),[12] the Free Software Foundation Europe (2008),[13] the Pirate Party of Sweden (2009),[14] and the Pirate Party of Germany (2010).[15] In the French WorldHeritage, the Schulze method was one of two multi-candidate methods approved by a majority in 2005,[16] and it has been used several times.[17]

In 2011, Schulze published the method in the academic journal Social Choice and Welfare.[1]

Users

sample ballot for Wikimedia's Board of Trustees elections

The Schulze method is not currently used in parliamentary elections. However, it has been used for parliamentary primaries in the Swedish Pirate Party. It is also starting to receive support in other public organizations. Organizations which currently use the Schulze method are:

Notes

  1. ^ a b c d e f g h i j k l m n o p q Markus Schulze, A new monotonic, clone-independent, reversal symmetric, and condorcet-consistent single-winner election method, Social Choice and Welfare, volume 36, number 2, page 267–303, 2011. Preliminary version in Voting Matters, 17:9-19, 2003.
  2. ^ Under reasonable probabilistic assumptions when the number of voters is much larger than the number of candidates
  3. ^ a b c Douglas R. Woodall, Properties of Preferential Election Rules, Voting Matters, issue 3, pages 8-15, December 1994
  4. ^ Tideman, T. Nicolaus, "Independence of clones as a criterion for voting rules," Social Choice and Welfare vol 4 #3 (1987), pp 185-206.
  5. ^ See:
    • Markus Schulze, Condorect sub-cycle rule, October 1997
    • Mike Ossipoff, Party List P.S., July 1998
    • Markus Schulze, Tiebreakers, Subcycle Rules, August 1998
    • Markus Schulze, Maybe Schulze is decisive, August 1998
    • Norman Petry, Schulze Method - Simpler Definition, September 1998
    • Markus Schulze, Schulze Method, November 1998
  6. ^ See:
    • Anthony Towns, Disambiguation of 4.1.5, November 2000
    • Norman Petry, Constitutional voting, definition of cumulative preference, December 2000
  7. ^ a b Process for adding new board members, January 2003
  8. ^ a b See:
    • Constitutional Amendment: Condorcet/Clone Proof SSD Voting Method, June 2003
    • Constitution for the Debian Project, appendix A6
    • Debian Voting Information
  9. ^ a b See:
    • Gentoo Foundation Charter
    • Aron Griffis, 2005 Gentoo Trustees Election Results, May 2005
    • Lars Weiler, Gentoo Weekly Newsletter 23 May 2005
    • Daniel Drake, Gentoo metastructure reform poll is open, June 2005
    • Grant Goodyear, Results now more official, September 2006
    • 2007 Gentoo Council Election Results, September 2007
    • 2008 Gentoo Council Election Results, June 2008
    • 2008 Gentoo Council Election Results, November 2008
    • 2009 Gentoo Council Election Results, June 2009
    • 2009 Gentoo Council Election Results, December 2009
    • 2010 Gentoo Council Election Results, June 2010
  10. ^ a b 2007 TopCoder Collegiate Challenge, September 2007
  11. ^ See:
    • Jesse Plamondon-Willard, Board election to use preference voting, May 2008
    • Mark Ryan, 2008 Wikimedia Board Election results, June 2008
    • 2008 Board Elections, June 2008
    • 2009 Board Elections, August 2009
  12. ^ a b section 3.4.1 of the Rules of Procedures for Online Voting
  13. ^ a b See:
    • article 6 section 3 of the constitution
    • Fellowship vote for General Assembly seats, March 2009
    • And the winner of the election for FSFE's Fellowship GA seat is ..., June 2009
  14. ^ a b See:
    • Inför primärvalen, October 2009
    • Dags att kandidera till riksdagen, October 2009
    • Råresultat primärvalet, January 2010
  15. ^ a b 11 of the 16 regional sections and the federal section of the Pirate Party of Germany are using LiquidFeedback for unbinding internal opinion polls. In 2010/2011, the Pirate Parties of Neukölln (link), Mitte (link), Steglitz-Zehlendorf (link), Lichtenberg (link), and Tempelhof-Schöneberg (link) adopted the Schulze method for its primaries. Furthermore, the Pirate Party of Berlin (in 2011) (link) and the Pirate Party of Regensburg (in 2012) (link) adopted this method for their primaries.
  16. ^ a b Choix dans les votes
  17. ^ Spécial:Pages liées/Méthode Schulze
  18. ^ §12(4), §12(15), and §14(3) of the bylaws, April 2013
  19. ^ Election of the Annodex Association committee for 2007, February 2007
  20. ^ Ajith, Van Atta win ASG election, April 2013
  21. ^ §6 and §7 of its bylaws, May 2014
  22. ^ §9a of the bylaws, October 2013
  23. ^ See:
    • Important notice for Golden Geek voters, September 2007
    • Golden Geek Awards 2008 - Nominations Open, August 2008
    • Golden Geek Awards 2009 - Nominations Open, August 2009
    • Golden Geek Awards 2010 - Nominations Open, September 2010
    • Golden Geek Awards 2011 - Nominations Open, September 2011
  24. ^ Project Logo, October 2009
  25. ^ "Codex Alpe Adria Competitions". 0xaa.org. 2010-01-24. Retrieved 2010-05-08. 
  26. ^ Civics Meeting Minutes, March 2012
  27. ^ Adam Helman, Family Affair Voting Scheme - Schulze Method
  28. ^ See:
    • Candidate cities for EBTM05, December 2004
    • Meeting location preferences, December 2004
    • Date for EBTM07 Berlin, January 2007
    • Vote the date of the Summer EBTM08 in Ljubljana, January 2008
    • New Logo for EBT, August 2009
  29. ^ "Guidance Document". Eudec.org. 2009-11-15. Retrieved 2010-05-08. 
  30. ^ Democratic election of the server admins, July 2010
  31. ^ Campobasso. Comunali, scattano le primarie a 5 Stelle, February 2014
  32. ^ Fondi, il punto sui candidati a sindaco. Certezze, novità e colpi di scena, March 2015
  33. ^ article 25(5) of the bylaws, October 2013
  34. ^ 2° Step Comunarie di Montemurlo, November 2013
  35. ^ article 12 of the bylaws, January 2015
  36. ^ Ridefinizione della lista di San Cesareo con Metodo Schulze, February 2014
  37. ^ article 51 of the statutory rules
  38. ^ Voters Guide, September 2011
  39. ^ See:
    • Eletto il nuovo Consiglio nella Free Hardware Foundation, June 2008
    • Poll Results, June 2008
  40. ^ GnuPG Logo Vote, November 2006
  41. ^ §14 of the bylaws
  42. ^ "User Voting Instructions". Gso.cs.binghamton.edu. Retrieved 2010-05-08. 
  43. ^ Haskell Logo Competition, March 2009
  44. ^ "Hillegass-Parker House Bylaws § 5. Elections". Hillegass-Parker House website. Retrieved 4 October 2015. 
  45. ^ article VI section 10 of the bylaws, November 2012
  46. ^ A club by any other name ..., April 2009
  47. ^ See:
    • Ka-Ping Yee, Condorcet elections, March 2005
    • Ka-Ping Yee, Kingman adopts Condorcet voting, April 2005
  48. ^ Knight Foundation awards $5000 to best created-on-the-spot projects, June 2009
  49. ^ Kubuntu Council 2013, May 2013
  50. ^ See:
    • Mascot 2007 contest, July 2006
    • Mascot 2008 and cover 2007 contests, May 2007
    • Mascot 2009 and program cover 2008 contests, April 2008
    • Mascot 2010 and program cover 2009 contests, May 2009
    • Mascot 2011 and book cover 2010 contests, May 2010
    • Mascot 2012 and book cover 2011 contests, May 2011
  51. ^ article 8.3 of the bylaws
  52. ^ The Principles of LiquidFeedback. Berlin: Interaktive Demokratie e. V. 2014.  
  53. ^ Lumiera Logo Contest, January 2009
  54. ^ "Madisonium Bylaws - Adopted". Google Docs. 
  55. ^ The MKM-IG uses Condorcet with dual dropping. That means: The Schulze ranking and the ranked pairs ranking are calculated and the winner is the top-ranked candidate of that of these two rankings that has the better Kemeny score. See:
    • MKM-IG Charter
    • Michael Kohlhase, MKM-IG Trustees Election Details & Ballot, November 2004
    • Andrew A. Adams, MKM-IG Trustees Election 2005, December 2005
    • Lionel Elie Mamane, Elections 2007: Ballot, August 2007
  56. ^ "Wahlmodus" (in Deutsch). Metalab.at. Retrieved 2010-05-08. 
  57. ^ Benjamin Mako Hill, Voting Machinery for the Masses, July 2008
  58. ^ See:
    • Wahlen zum Neo-2-Freeze: Formalitäten, February 2010
    • Hinweise zur Stimmabgabe, March 2010
    • Ergebnisse, March 2010
  59. ^ bylaws, September 2014
  60. ^ "2009 Director Elections". noisebridge.net. 
  61. ^ NSC Jersey election, NSC Jersey vote, September 2007
  62. ^ "Online Voting Policy". openembedded.org. 
  63. ^ See:
    • 2010 OpenStack Community Election, November 2010
    • OpenStack Governance Elections Spring 2012, February 2012
  64. ^ National Congress 2011 Results, November 2011
  65. ^ §6(10) of the bylaws
  66. ^ The Belgian Pirate Party Announces Top Candidates for the European Elections, January 2014
  67. ^ article 7.5 of the bylaws
  68. ^ Rules adopted on 18 December 2011
  69. ^ Verslag ledenraadpleging 4 januari, January 2015
  70. ^ "23 January 2011 meeting minutes". pirateparty.org.nz. 
  71. ^ Piratenversammlung der Piratenpartei Schweiz, September 2010
  72. ^ Article IV Section 3 of the bylaws, April 2013
  73. ^ 2006 Community for Pittsburgh Ultimate Board Election, September 2006
  74. ^ §16(4) of the bylaws, November 2014
  75. ^ Committee Elections, April 2012
  76. ^ LogoVoting, December 2007
  77. ^ See:
    • SPF Council Election Procedures
    • 2006 SPF Council Election, January 2006
    • 2007 SPF Council Election, January 2007
  78. ^ Squeak Oversight Board Election 2010, March 2010
  79. ^ See:
    • Bylaws of the Students for Free Culture, article V, section 1.1.1
    • Free Culture Student Board Elected Using Selectricity, February 2008
  80. ^ Election status update, September 2009
  81. ^ §10 III of its bylaws, June 2013
  82. ^ Minutes of the 2010 Annual Sverok Meeting, November 2010
  83. ^ constitution, December 2010
  84. ^ article VI section 6 of the bylaws
  85. ^ Ubuntu IRC Council Position, May 2012
  86. ^ See this mail.
  87. ^ "/v/GAs - Pairwise voting results". vidyagaemawards.com. 
  88. ^ See e.g. here [4] (May 2009), here [5] (August 2009), and here [6] (December 2009).
  89. ^ See here and here.
  90. ^ "Девятнадцатые выборы арбитров, второй тур" [Result of Arbitration Committee Elections]. kalan.cc. 

External links

  • Official website
  • Condorcet Computations by Johannes Grabmeier
  • Spieltheorie (German) by Bernhard Nebel
  • Accurate Democracy by Rob Loring
  • Christoph Börgers (2009), Mathematics of Social Choice: Voting, Compensation, and Division, SIAM, ISBN 0-89871-695-0
  • Nicolaus Tideman (2006), Collective Decisions and Voting: The Potential for Public Choice, Burlington: Ashgate, ISBN 0-7546-4717-X
  • preftools by the Public Software Group
  • Condorcet PHP PHP library supporting multiple Condorcet methods, including that of Schulze.
  • Arizonans for Condorcet Ranked Voting
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.