Test-Driven Development with React and TypeScript: Building Maintainable React Applications 2nd Edition Juntao Qiu full chapter instant download

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 44

Test-Driven Development with React

and TypeScript: Building Maintainable


React Applications 2nd Edition Juntao
Qiu
Visit to download the full and correct content document:
https://ebookmass.com/product/test-driven-development-with-react-and-typescript-bui
lding-maintainable-react-applications-2nd-edition-juntao-qiu/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

React and React Native - Fifth Edition Mikhail Sakhniuk

https://ebookmass.com/product/react-and-react-native-fifth-
edition-mikhail-sakhniuk/

■■■■■■ ■■ TypeScript■React■Node.js■webpack ■ Docker


Frank Zammetti

https://ebookmass.com/product/%e7%8e%b0%e4%bb%a3%e5%85%a8%e6%a0%8
8%e5%bc%80%e5%8f%91-%e4%bd%bf%e7%94%a8-
typescript%e3%80%81react%e3%80%81node-
js%e3%80%81webpack-%e5%92%8c-docker-frank-zammetti/

Master React in 5 Days: Become a React Expert in Under


a Week Eric Sarrion

https://ebookmass.com/product/master-react-in-5-days-become-a-
react-expert-in-under-a-week-eric-sarrion/

Master React in 5 Days: Become a React Expert in Under


a Week Eric Sarrion

https://ebookmass.com/product/master-react-in-5-days-become-a-
react-expert-in-under-a-week-eric-sarrion-2/
Test-Driven Development in Go Simion

https://ebookmass.com/product/test-driven-development-in-go-
simion/

React Hooks in Action MEAP 03 John Larsen [Larsen

https://ebookmass.com/product/react-hooks-in-action-meap-03-john-
larsen-larsen/

Hands-on Test-Driven Development: Using Ruby, Ruby on


Rails, and RSpec 1st Edition Greg Donald

https://ebookmass.com/product/hands-on-test-driven-development-
using-ruby-ruby-on-rails-and-rspec-1st-edition-greg-donald/

Hands-on Test-Driven Development: Using Ruby, Ruby on


Rails, and RSpec 1 / converted Edition Greg Donald

https://ebookmass.com/product/hands-on-test-driven-development-
using-ruby-ruby-on-rails-and-rspec-1-converted-edition-greg-
donald/

Database-Driven Web Development: Learn to Operate at a


Professional Level with PERL and MySQL 2nd Edition
Thomas Valentine

https://ebookmass.com/product/database-driven-web-development-
learn-to-operate-at-a-professional-level-with-perl-and-mysql-2nd-
edition-thomas-valentine/
Test-Driven
Development with
React and TypeScript
Building Maintainable React
Applications

Second Edition

Juntao Qiu
Test-Driven
Development with
React and TypeScript
Building Maintainable React
Applications
Second Edition

Juntao Qiu
Test-Driven Development with React and TypeScript: Building
Maintainable React Applications

Juntao Qiu
Wantirna, 3152, VIC, Australia

ISBN-13 (pbk): 978-1-4842-9647-9 ISBN-13 (electronic): 978-1-4842-9648-6


https://doi.org/10.1007/978-1-4842-9648-6

Copyright © 2023 by Juntao Qiu


This work is subject to copyright. All rights are reserved by the Publisher, whether the whole or
part of the material is concerned, specifically the rights of translation, reprinting, reuse of
illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way,
and transmission or information storage and retrieval, electronic adaptation, computer software,
or by similar or dissimilar methodology now known or hereafter developed.
Trademarked names, logos, and images may appear in this book. Rather than use a trademark
symbol with every occurrence of a trademarked name, logo, or image we use the names, logos,
and images only in an editorial fashion and to the benefit of the trademark owner, with no
intention of infringement of the trademark.
The use in this publication of trade names, trademarks, service marks, and similar terms, even if
they are not identified as such, is not to be taken as an expression of opinion as to whether or not
they are subject to proprietary rights.
While the advice and information in this book are believed to be true and accurate at the date of
publication, neither the authors nor the editors nor the publisher can accept any legal
responsibility for any errors or omissions that may be made. The publisher makes no warranty,
express or implied, with respect to the material contained herein.
Managing Director, Apress Media LLC: Welmoed Spahr
Acquisitions Editor: Divya Modi
Development Editor: James Markham
Coordinating Editor: Divya Modi
Cover designed by eStudioCalamar
Cover image by Pixabay
Distributed to the book trade worldwide by Springer Science+Business Media New York, 1
New York Plaza, Suite 4600, New York, NY 10004-1562, USA. Phone 1-800-SPRINGER, fax (201)
348-4505, e-mail orders-ny@springer-sbm.com, or visit www.springeronline.com. Apress Media,
LLC is a California LLC and the sole member (owner) is Springer Science + Business Media
Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware corporation.
For information on translations, please e-mail booktranslations@springernature.com; for
reprint, paperback, or audio rights, please e-mail bookpermissions@springernature.com.
Apress titles may be purchased in bulk for academic, corporate, or promotional use. eBook
versions and licenses are also available for most titles. For more information, reference our Print
and eBook Bulk Sales web page at http://www.apress.com/bulk-sales.
Any source code or other supplementary material referenced by the author in this book is
available to readers on GitHub (github.com/apress). For more detailed information, please visit
http://www.apress.com/source-code.
Paper in this product is recyclable
To Mansi and Luna.
Table of Contents
About the Author�������������������������������������������������������������������������������xiii
About the Technical Reviewers����������������������������������������������������������xv
Acknowledgments����������������������������������������������������������������������������xvii
Foreword 1����������������������������������������������������������������������������������������xix
Foreword 2����������������������������������������������������������������������������������������xxi
Introduction�������������������������������������������������������������������������������������xxiii

Chapter 1: A Brief History of Test-Driven Development������������������������1


What Is Test-Driven Development?�����������������������������������������������������������������������1
The Red-Green-Refactor Cycle������������������������������������������������������������������������2
A Closer Look at Red-Green-Refactor�������������������������������������������������������������4
Types of TDD����������������������������������������������������������������������������������������������������5
Prerequisites of TDD����������������������������������������������������������������������������������������8
Other Techniques That Can Help Implement TDD������������������������������������������������10
Tasking����������������������������������������������������������������������������������������������������������10
Summary������������������������������������������������������������������������������������������������������������12
Further Reading��������������������������������������������������������������������������������������������������12

Chapter 2: Get Started with Jest��������������������������������������������������������15


Set Up the Environment��������������������������������������������������������������������������������������15
Install and Configure Jest������������������������������������������������������������������������������16
Jest at First Glance���������������������������������������������������������������������������������������������18
Basic Concepts in Jest����������������������������������������������������������������������������������21

v
Table of Contents

Using Matchers in Jest���������������������������������������������������������������������������������������25


Basic Usages�������������������������������������������������������������������������������������������������25
Matchers for Array and Object�����������������������������������������������������������������������27
The Powerful Function expect�����������������������������������������������������������������������28
Build Your Matchers���������������������������������������������������������������������������������������31
Mocking and Stubbing����������������������������������������������������������������������������������������34
jest.fn for Spying�������������������������������������������������������������������������������������������35
Mock Implementation������������������������������������������������������������������������������������35
Stub a Remote Service Call���������������������������������������������������������������������������36
Summary������������������������������������������������������������������������������������������������������������37

Chapter 3: Refactoring Essentials: The Basics You Need to Know����39


The Ten Most Common Refactorings������������������������������������������������������������������39
Let’s Talk the Problem – Code Smells�����������������������������������������������������������������40
Long Files������������������������������������������������������������������������������������������������������40
Big Props List������������������������������������������������������������������������������������������������41
Mixing Computation with Views��������������������������������������������������������������������42
Overuse of Mocks������������������������������������������������������������������������������������������43
Not Following Established Principles������������������������������������������������������������44
The Problem – ROT13�����������������������������������������������������������������������������������������45
The Initial Implementation����������������������������������������������������������������������������������45
The Top Ten Refactorings������������������������������������������������������������������������������������47
Step 1: Slide Statements�������������������������������������������������������������������������������48
Step 2: Extract Constant��������������������������������������������������������������������������������49
Step 3: Extract Function��������������������������������������������������������������������������������50
Step 4: Rename Parameter����������������������������������������������������������������������������51
Step 5: Rename Variable�������������������������������������������������������������������������������52
Step 6: Extract Function��������������������������������������������������������������������������������53

vi
Table of Contents

Step 7: Replace if-else with ?������������������������������������������������������������������������55


Step 8: Extract Function��������������������������������������������������������������������������������56
Step 9: Extract Parameter������������������������������������������������������������������������������57
Step 10: Extract Constant������������������������������������������������������������������������������58
Step 11: Slide Statements�����������������������������������������������������������������������������59
Step 12: Move Fields�������������������������������������������������������������������������������������60
Step 13: Function to Arrow Function�������������������������������������������������������������61
Step 14: Simplify Logic����������������������������������������������������������������������������������62
Summary������������������������������������������������������������������������������������������������������������63

Chapter 4: Test-Driven Development Essentials���������������������������������65


Writing Tests�������������������������������������������������������������������������������������������������������65
Using Given-When-Then to Arrange a Test����������������������������������������������������66
Triangulation Method������������������������������������������������������������������������������������������69
Example: Function addition���������������������������������������������������������������������������69
How to Do Tasking with TDD�������������������������������������������������������������������������������72
An Expression Parser for Tracking Progress��������������������������������������������������73
Applying TDD Step by Step����������������������������������������������������������������������������75
Keep Refactoring – Extract Functions to Files�����������������������������������������������78
Summary������������������������������������������������������������������������������������������������������������80

Chapter 5: Project Setup���������������������������������������������������������������������81


Application Requirements�����������������������������������������������������������������������������������81
Feature 1 – Book List������������������������������������������������������������������������������������82
Feature 2 – Book Detail���������������������������������������������������������������������������������83
Feature 3 – Searching�����������������������������������������������������������������������������������83
Feature 4 – Book Reviews�����������������������������������������������������������������������������84

vii
Table of Contents

Create the Project�����������������������������������������������������������������������������������������������84


Using create-react-app���������������������������������������������������������������������������������84
Material UI Library�����������������������������������������������������������������������������������������88
Install Cypress�����������������������������������������������������������������������������������������������91
Commit Code to Version Control��������������������������������������������������������������������95
Summary������������������������������������������������������������������������������������������������������������96

Chapter 6: Implement the Book List���������������������������������������������������97


Acceptance Tests for Book List���������������������������������������������������������������������������97
A List (of Books)��������������������������������������������������������������������������������������������97
Verify Book Name������������������������������������������������������������������������������������������99
Refactoring – Extract Function��������������������������������������������������������������������100
Refactoring – Extract Component����������������������������������������������������������������103
Talk to the Backend Server�������������������������������������������������������������������������������105
Stub Server��������������������������������������������������������������������������������������������������106
Async Request in Application����������������������������������������������������������������������108
Setup and Teardown������������������������������������������������������������������������������������110
Adding a Loading Indicator�������������������������������������������������������������������������������114
Refactor First�����������������������������������������������������������������������������������������������114
Define a React Hook������������������������������������������������������������������������������������118
Unit Tests of the Bookish Application����������������������������������������������������������������120
Unit Test with the React Testing Library������������������������������������������������������120
Summary����������������������������������������������������������������������������������������������������������123

Chapter 7: Implementing the Book Detail View��������������������������������125


Acceptance Tests����������������������������������������������������������������������������������������������125
Link to Detail Page��������������������������������������������������������������������������������������126
Verify Book Title on Detail Page�������������������������������������������������������������������126
Frontend Routing�����������������������������������������������������������������������������������������127

viii
Table of Contents

Unit Tests����������������������������������������������������������������������������������������������������������132
Refactoring��������������������������������������������������������������������������������������������������133
Book Detail Page�����������������������������������������������������������������������������������������137
File Structure�����������������������������������������������������������������������������������������������139
Testing Data������������������������������������������������������������������������������������������������������141
User Interface Refinement��������������������������������������������������������������������������������143
Using Grid System���������������������������������������������������������������������������������������144
Handling Default Value��������������������������������������������������������������������������������������146
A Failing Test with undefined����������������������������������������������������������������������146
One Last Change?���������������������������������������������������������������������������������������������149
Summary����������������������������������������������������������������������������������������������������������150

Chapter 8: Searching by Keyword����������������������������������������������������153


Acceptance Test������������������������������������������������������������������������������������������������153
One Step Further�����������������������������������������������������������������������������������������158
What Have We Done?����������������������������������������������������������������������������������162
Moving Forward – The Test Code Is As Important���������������������������������������������163
Summary����������������������������������������������������������������������������������������������������������167

Chapter 9: Introduction to State Management���������������������������������169


State Management��������������������������������������������������������������������������������������������170
A Typical Scenario of Building UI�����������������������������������������������������������������170
Pub-Sub Pattern������������������������������������������������������������������������������������������171
A Brief of Redux�������������������������������������������������������������������������������������������172
Decoupling Data and View���������������������������������������������������������������������������174
The Formula: view = f(state)�����������������������������������������������������������������������176
Implementing State Management���������������������������������������������������������������������178
Environment Setup��������������������������������������������������������������������������������������178
Define a Slice����������������������������������������������������������������������������������������������179

ix
Table of Contents

Fetching Data from Remote�������������������������������������������������������������������������181


Define the Store�������������������������������������������������������������������������������������������183
Migrate the Application�������������������������������������������������������������������������������������185
Book List Container�������������������������������������������������������������������������������������186
Refine the SearchBox����������������������������������������������������������������������������������187
Test Individual Reducers�����������������������������������������������������������������������������������189
Book Details Slice���������������������������������������������������������������������������������������������190
Do You Need a State Management Library?������������������������������������������������������193
Summary����������������������������������������������������������������������������������������������������������194

Chapter 10: Book Reviews����������������������������������������������������������������197


Business Requirements������������������������������������������������������������������������������������198
Start with an Empty List������������������������������������������������������������������������������198
Rendering a Static List��������������������������������������������������������������������������������200
Use the Review Component in BookDetail��������������������������������������������������201
Fulfill a Book Review Form��������������������������������������������������������������������������203
End-to-End Test�������������������������������������������������������������������������������������������������205
Define a Review Slice����������������������������������������������������������������������������������207
Adjust the Stub Server for Book Reviews����������������������������������������������������209
Refactoring��������������������������������������������������������������������������������������������������214
Add More Fields������������������������������������������������������������������������������������������������216
Review Editing��������������������������������������������������������������������������������������������������220
Save a Review – Action and Reducer����������������������������������������������������������223
Integration All Together��������������������������������������������������������������������������������227
Summary����������������������������������������������������������������������������������������������������������230

x
Table of Contents

Chapter 11: Behavior-Driven Development���������������������������������������231


Play with Cucumber������������������������������������������������������������������������������������������232
Install and Config cucumber Plugin�������������������������������������������������������������233
Live Document with cucumber�������������������������������������������������������������������������235
File Structure�����������������������������������������������������������������������������������������������235
The First Feature Specification��������������������������������������������������������������������235
Define the Steps������������������������������������������������������������������������������������������236
Book List������������������������������������������������������������������������������������������������������238
Searching����������������������������������������������������������������������������������������������������240
Review Page������������������������������������������������������������������������������������������������242
Summary����������������������������������������������������������������������������������������������������������244

Appendix A: Background of Testing Strategies��������������������������������245

Appendix B: A Short Introduction to TypeScript�������������������������������251

Index�������������������������������������������������������������������������������������������������259

xi
About the Author
Juntao Qiu is an accomplished software
developer renowned for his expertise
in producing high-quality and easily
maintainable code. He is committed to
helping individuals improve their code-
writing abilities and generously shares his vast
knowledge and experience through multiple
platforms, including books such as this one
and Maintainable React (Leanpub, 2022).
In addition, Juntao hosts a YouTube channel (@icodeit.juntao) where
he provides valuable insights, tips, and best practices for writing clean
code and performing refactoring. Juntao’s goal is to empower developers,
enabling them to reach their full potential and have a positive impact on
the software development industry.

xiii
About the Technical Reviewers
Jeff Friesen is a freelance teacher and
software developer with an emphasis on
Java. In addition to authoring Java I/O, NIO
and NIO.2 (Apress) and Java Threads and
the Concurrency Utilities (Apress), Jeff has
written numerous articles on Java and other
technologies (such as Android) for JavaWorld
(JavaWorld.com) – now InfoWorld (www.
infoworld.com/category/java/), informIT
(InformIT.com), Java.net (no longer in existence), SitePoint (SitePoint.
com), and other websites. Jeff can be contacted via his email address:
jefff@xplornet.ca.

Alexander Nnakwue has a background


in mechanical engineering and is a senior
software engineer with over seven years of
experience in various industries including
payments, blockchain, and marketing
technology. He is a published author for
professional JavaScript, a technical writer, and
a reviewer. He currently works as a software
engineer at Konecranes with the digital
experience team, working on machine data
and industrial cranes.
In his spare time, he loves to listen to music and enjoys the game of
soccer. He resides in Helsinki, Finland, with his lovely wife and son Kaobi.

xv
Acknowledgments
I am profoundly grateful to my ThoughtWorks colleagues for their
enthusiastic engagement and invaluable contributions during the
development of this book. Our project discussions were a fountain of
insight, enriching the narrative with an array of diverse perspectives. A
special acknowledgment goes to Evan Bottcher for his meticulous review
and for providing an eloquent foreword for the book.
Before embarking on the second edition, I reached out to my
newsletter (https://juntao.substack.com/) subscribers with a survey,
seeking their expectations for the new iteration. The response was
overwhelming and deeply informative – my heartfelt thanks go out to
those dedicated readers who took the time to provide their input.
I must extend my profound appreciation to the editorial team for their
indispensable support throughout the second edition’s journey. Their
expert advice has proven invaluable in refining the text, and it’s their
tireless dedication that has brought this project to fruition.
Finally, upon first sharing my book’s vision with my colleagues
at ThoughtWorks, the outpouring of valuable feedback I received –
spanning from minor typographical corrections to substantial technical
suggestions – was truly overwhelming. In particular, on a cool morning
in May 2020, I was greeted with an uplifting email from Hannah Bourke,
who not only expressed her appreciation for the book but also offered
her editing assistance as a native English speaker and fellow developer.
Her subsequent pull requests offered not just high-quality language
corrections but also insightful technical review comments from a learner’s
perspective.

xvii
Acknowledgments

Furthermore, I am indebted to Martin Fowler, a distinguished


developer and writer, who surprised me with detailed and insightful
feedback on my initial draft. Although the content of the book has
significantly evolved since that draft, the essence of his invaluable
comments is still palpably present. Heeded his advice, I’ve trimmed
nearly a quarter of the content to enhance clarity and readability,
removed unrelated code snippets from examples, and provided more
context around the code. Above all, the lesson of simplicity that I learned
from Martin has been invaluable – emphasizing a thorough exploration
of one topic at a time, rather than superficially touching upon every
possible aspect.
In summary, the journey to this book’s completion has been enriched
by the collective wisdom and support of countless individuals. Their
feedback, suggestions, and encouragement have been nothing short of
invaluable, for which I am eternally grateful.

xviii
Foreword 1
Sometimes, I find it hard to believe that it’s been more than two decades
since Kent Beck published Extreme Programming Explained including
Test-Driven Development (TDD) as a core practice. In the years since then,
the use of automated testing has become quite commonplace, something
that almost all developers are familiar with – however, the “Red-Green-­
Refactor” cycle of TDD is often missing. The reality is that building
software test first is not easy or trivial in real-world software development
and requires deliberate practice and usually someone experienced to
learn from.
At ThoughtWorks, my role is Head of Engineering – responsible for the
quality of the software that our teams produce for and with our clients.
We set a high standard for the “internal” quality of the code we produce,
wanting it to be maintainable and extensible so that it can quickly be
changed with confidence. Test-Driven Development is a default practice
in ThoughtWorks – our experience shows that the practice leads to better
software design and good confidence from a comprehensive automated
test suite.
In my years at ThoughtWorks, I’ve seen the phenomenal rise in the
importance of JavaScript and browser applications. In 2010, we advised
that the industry should treat JavaScript as a first-class language (www.
thoughtworks.com/radar/languages-and-frameworks/javascript-­
as-­a-first-class-language) on the ThoughtWorks Technology Radar,
applying all of the same engineering rigor as other platforms. As one of
the authors of the Technology Radar, I’ve seen and helped document the
explosion of tooling and frameworks in JavaScript, many of which have
been related to the area of test automation.

xix
Foreword 1

Test-Driven Development with React and TypeScript is a practical and


hands-on guide to learn TDD with React, the most prevalent browser
application framework in use today. It guides the reader through the
fundamentals of TDD with React by implementing a series of requirements
in a nontrivial example application. The book is fast-paced, so if you’re
unfamiliar with React and its friends, you’ll need to pause along the way
and do some research as the example application grows in features and
dependencies. Along the way, Juntao points out some “smells” or signs that
the approach can be improved – for example, cluttered code organization
or hard-to-maintain test data.
Read this book if you would like to learn by example from someone
who is an expert in using TDD to grow browser applications.

Evan Bottcher
March 2021

xx
Foreword 2
Landing in the middle of a React project that had very low test coverage,
in a team that had aspirations to improve it, but without a clear strategy
of how to go about it, I struggled to find resources that stepped out how to
approach testing for a frontend project. I couldn’t find a clear explanation
of how to implement Test-Driven Development for a UI, let alone
specifically for React. This book couldn’t have come at a better time.
There are a plethora of different testing methodologies and libraries
available just for React. The ones you choose will depend on many
things. This book doesn’t prescribe a particular solution but establishes
the purpose of tests in driving out specifications and suggests an overall
approach, with practical guidance and examples. Juntao provides a
holistic explanation of the purpose and implementation of Test-Driven
Development for React, demonstrating the benefits of moving testing
earlier in the process, improving the robustness and design of our code.
Juntao’s years of experience, his eagerness and passion for learning
and sharing his knowledge in a didactic way, help to make this a relevant,
practical, and engaging guide to follow and have given me confidence in
my own testing strategies.

Hannah Bourke
March 2021

xxi
Introduction
This comprehensive book is your ultimate guide to mastering Test-Driven
Development (TDD) in the context of React and TypeScript. Whether you're
a seasoned developer seeking to refine your skills or a newcomer eager to
embrace industry-standard practices, this book caters to all levels of expertise.
Spanning a wide range of topics, each chapter in this book is
thoughtfully designed to provide you with a deep understanding of TDD
principles and their application in real-world scenarios. Let's take a
glimpse into the chapters and their role in your learning journey:

Chapters 1 to 4: Setting Up the Foundation

In these early chapters, we lay the groundwork for


your TDD journey. We provide a brief history of
Test-Driven Development, allowing you to grasp
the underlying concepts and motivations. You'll
then dive into getting started with Jest, Cypress, and
the React Testing Library, equipping you with the
necessary tools to write effective tests.

Chapters 5 to 10: Implementing the Features

These chapters form the heart of the book, as we guide


you through the step-by-step implementation of key
features in our Bookish application. From building
the book list and book detail view to incorporating
search functionality, state management, and even
enabling user reviews, you'll gain invaluable hands-on
experience in applying TDD principles to build robust
and reliable React applications.

xxiii
Introduction

Chapter 11: Describing Acceptance Tests

In this final chapter, we explore the concept of


acceptance testing and introduce you to Behavior-
Driven Development (BDD). You'll learn how to
write acceptance tests that ensure your application
meets the desired behavior and satisfies stakeholder
requirements.

By following along with each chapter, you'll not only acquire the
knowledge and skills to excel in TDD but also experience the benefits
firsthand. Faster feedback cycles, improved code quality, enhanced
collaboration, and the confidence to make changes and add new features
are just a few of the advantages you'll gain.
Are you ready to embark on a transformative journey toward
becoming a more confident, efficient, and skilled developer? Test-Driven
Development with React and TypeScript: Building Maintainable React
Applications is your comprehensive companion. Let the power of TDD
guide your development process, elevate your coding skills, and lay the
foundation for a successful career in software development. Get ready to
dive in and unlock the full potential of TDD in your React projects.

xxiv
Another random document with
no related content on Scribd:
Plays of the Sea 111
PASCAL, BLAISE Pensées and The Provincial Letters
164
PATER, WALTER The Renaissance 86
PATER, WALTER Marius the Epicurean 90
PEARSON, EDMUND Studies in Murder 113
PEPYS, SAMUEL Samuel Pepys’ Diary 103
PETRONIUS ARBITER The Satyricon 156
PLATO The Republic 153
PLATO The Philosophy of Plato 181
POE, EDGAR ALLAN Best Tales 82
POLO, MARCO The Travels of Marco Polo 196
PORTER, KATHERINE ANNE Flowering Judas 88
PREVOST, ANTOINE Manon Lescaut 85
PROUST, MARCEL Cities of the Plain 220
PROUST, MARCEL The Captive 120
PROUST, MARCEL The Guermantes Way 213
PROUST, MARCEL Swann’s Way 59
PROUST, MARCEL Within a Budding Grove 172
RABELAIS Gargantua and Pantagruel 4
READE, CHARLES The Cloister and the Hearth 62
REED, JOHN Ten Days that Shook the World 215
RENAN, ERNEST The Life of Jesus 140
ROSTAND, EDMOND Cyrano de Bergerac 154
RUSSELL, BERTRAND Selected Papers of Bertrand Russell
137
SAROYAN, WILLIAM The Daring Young Man on the Flying
Trapeze 92
SCHOPENHAUER The Philosophy of Schopenhauer 52
SCHREINER, OLIVE The Story of an African Farm 132
SHEEAN, VINCENT Personal History 32
SMOLLETT, TOBIAS Humphry Clinker 159
SPINOZA The Philosophy of Spinoza 60
STEINBECK, JOHN In Dubious Battle 115
STEINBECK, JOHN The Grapes of Wrath 148
STEINBECK, JOHN Tortilla Flat 216
STEINBECK, JOHN Of Mice and Men 29
STENDHAL The Charterhouse of Parma 150
STENDHAL The Red and the Black 157
STERNE, LAURENCE Tristram Shandy 147
STOKER, BRAM Dracula 31
STONE, IRVING Lust for Life 11
STRACHEY, LYTTON Eminent Victorians 212
SUDERMANN, HERMANN The Song of Songs 162
SUETONIUS Lives of the Twelve Caesars 188
SWIFT, JONATHAN Gulliver’s Travels, A Tale of a Tub, The
Battle of the Books 100
SWINBURNE, CHARLES Poems 23
SYMONDS, JOHN A. The Life of Michelangelo 49
TCHEKOV, ANTON Short Stories 50
TCHEKOV, ANTON Sea Gull, Cherry Orchard, Three
Sisters, etc. 171
THACKERAY, WILLIAM Henry Esmond 80
THACKERAY, WILLIAM Vanity Fair 131
THOMPSON, FRANCIS Complete Poems 38
THOREAU, HENRY DAVID Walden and Other Writings 155
THUCYDIDES The Complete Writings of 58
TOLSTOY, LEO Anna Karenina 37
TOMLINSON, H. M. The Sea and the Jungle 99
TROLLOPE, ANTHONY Barchester Towers and The Warden 41
TURGENEV, IVAN Fathers and Sons 21
VAN LOON, HENDRIK W. Ancient Man 105
VEBLEN, THORSTEIN The Theory of the Leisure Class 63
VIRGIL’S WORKS Including The Aeneid, Eclogues, and
Georgics 75
VOLTAIRE Candide 47
WALPOLE, HUGH Fortitude 178
WALTON, IZAAK The Compleat Angler 26
WEBB, MARY Precious Bane 219
WELLS, H. G. Tono Bungay 197
WHITMAN, WALT Leaves of Grass 97
WILDE, OSCAR Dorian Gray, De Profundis 1
WILDE, OSCAR The Plays of Oscar Wilde 83
WILDE, OSCAR Poems and Fairy Tales 84
WOOLF, VIRGINIA Mrs. Dalloway 96
WOOLF, VIRGINIA To the Lighthouse 217
YEATS, W. B. Irish Fairy and Folk Tales 44
YOUNG, G. F. The Medici 179
ZOLA, EMILE Nana 142
ZWEIG, STEFAN Amok (In Collected German Stories
108)

MODERN LIBRARY GIANTS


A series of full-sized library editions of books that formerly were
available only in cumbersome and expensive sets.
THE TEXTS OF THE GIANTS ARE GUARANTEED
TO BE COMPLETE AND UNABRIDGED

Many are illustrated and some of them are over 1200 pages long.

G1. TOLSTOY, LEO. War and Peace.


G2. BOSWELL, JAMES. Life of Samuel Johnson.
G3. HUGO, VICTOR. Les Miserables.
G4. THE COMPLETE POEMS OF KEATS AND SHELLEY.
G5. PLUTARCH’S LIVES (The Dryden Translation).
G6. GIBBON, EDWARD. The Decline and Fall of the Roman Empire
G7. } (Complete in two volumes).
G8. THE COMPLETE NOVELS OF JANE AUSTEN.
G9. YOUNG, G. F. The Medici (Illustrated).
G10. TWELVE FAMOUS RESTORATION PLAYS (1660-1820)
(Congreve, Wycherley, Gay, Goldsmith, Sheridan, etc.)
G11. THE ESSAYS OF MONTAIGNE (The Florio Translation).
G12. THE MOST POPULAR NOVELS OF SIR WALTER SCOTT
(Quentin Durward, Ivanhoe, and Kenilworth).
G13. CARLYLE, THOMAS. The French Revolution (Illustrated).
G14. BULFINCH’S MYTHOLOGY (Illustrated).
G15. CERVANTES. Don Quixote (Illustrated).
G16. WOLFE, THOMAS. Look Homeward, Angel.
G17. THE POEMS AND PLAYS OF ROBERT BROWNING.
G18. ELEVEN PLAYS OF HENRIK IBSEN.
G19. THE COMPLETE WORKS OF HOMER.
G20. SYMONDS, JOHN ADDINGTON. Renaissance in Italy. (Complete
G21. } in two volumes).
G22. STRACHEY, JOHN. The Coming Struggle for Power.
G23. TOLSTOY, LEO. Anna Karenina.
G24. LAMB, CHARLES. The Complete Works and Letters of Charles
Lamb.
G25. THE COMPLETE PLAYS OF GILBERT AND SULLIVAN.
G26. MARX, KARL. Capital.
G27. DARWIN, CHARLES. The Origin of Species and The Descent of
Man.
G28. THE COMPLETE WORKS OF LEWIS CARROLL.
G29. PRESCOTT, WILLIAM H. The Conquest of Mexico and The
Conquest of Peru.
G30. MYERS, GUSTAVUS. History of the Great American Fortunes.
G31. WERFEL, FRANZ. The Forty Days of Musa Dagh.
G32. SMITH, ADAM. The Wealth of Nations.
G33. COLLINS, WILKIE. The Moonstone and The Woman in White.
G34. NIETZSCHE, FRIEDRICH. The Philosophy of Nietzsche.
G35. BURY, J. B. A History of Greece.
G36. DOSTOYEVSKY, FYODOR. The Brothers Karamazov.
G37. THE COMPLETE NOVELS AND SELECTED TALES OF
NATHANIEL HAWTHORNE.
G38. ROLLAND, ROMAIN. Jean-Christophe.
G39. THE BASIC WRITINGS OF SIGMUND FREUD.
G40. THE COMPLETE TALES AND POEMS OF EDGAR ALLAN POE.
G41. FARRELL, JAMES T. Studs Lonigan.
G42. THE POEMS AND PLAYS OF TENNYSON.
G43. DEWEY, JOHN. Intelligence in the Modern World: John Dewey’s
Philosophy.
G44. DOS PASSOS, JOHN. U. S. A.
G45. LEWISOHN, LUDWIG. The Story of American Literature.
G46. A NEW ANTHOLOGY OF MODERN POETRY.
G47. THE ENGLISH PHILOSOPHERS FROM BACON TO MILL.
G48. THE METROPOLITAN OPERA GUIDE.
G49. TWAIN, MARK. Tom Sawyer and Huckleberry Finn.
G50. WHITMAN, WALT. Leaves of Grass.
G51. THE BEST-KNOWN NOVELS OF GEORGE ELIOT.
G51. JOYCE, JAMES. Ulysses.
G53. SUE, EUGENE. The Wandering Jew.
G54. FIELDING, HENRY. Tom Jones.
G55. O’NEILL, EUGENE. Nine Plays by
G56. STERNE, LAURENCE. Tristram Shandy and A Sentimental
Journey
G57. BROOKS, VAN WYCK. The Flowering of New England.
G58. MALRAUX, ANDRÉ. Man’s Hope.
Transcriber’s Note
You will note in the Table of Contents, that the pagination of
the original text begins with ‘1’ for each of the two Parts. Page
references in these notes below refers to each Part by prefixing
‘1.’ or ‘2.’.
Errors deemed most likely to be the printer’s have been
corrected, and are noted here. The references are to the part,
page and line in the original.
1.44.21 Really, Madame d’Ambresac[,/.] Replaced.
1.102.22 from the window[ of] a country Added.
house
1.135.29 by the sumpt[u]ous curtains Inserted.
1.155.32 would never venture[.] Restored.
1.157.31 the thought of Mme. de Added.
Guermantes[.]
1.185.21 if-I[-]tell-you-a-thing Inserted.
1.194.25 were barely distinguish[i/a]ble Replaced.
1.209.15 discern[a/i]ble at most Replaced.
1.210.19 she’ll perhaps [h/b]e afraid Replaced.
1.213.17 a woman desir[i]ous of earning Removed.
1.290.28 [“]Whenever there’s a famous Added.
man
1.311.7 [“]After all, one never does know Added.
1.313.16 to explain it to him.[”] Added.
1.321.8 [“]if they’re all like Gilbert Added.
1.351.7 [“]But I’ve found out Removed.
1.358.27 [‘/“]Damn it, these fellows will see Replaced.
1.381.32 by exposing his strat[e/a]gem. Replaced.
1.393.7 that intermittent familiar[it]y Inserted.
396.22 his [“/‘]haggart[”/’]) of a mother Replaced.
1.418.21 rashes, asthma, ep[l]ilepsy, a Inserted.
terror
1.425.24 I said to him: ‘Y[’] mustn’t let go Added.

2.18.4 with a hot needle.[”] Added.


2.40.6 which he had[ had] left ajar. Removed.
2.70.28 the temptation to kiss you.[”] Added.
2.82.24 has been tra[n]smitted Inserted.
2.138.4 plent[l]y plenty of foreigners Inserted.
2.220.14 on the afternoon of[ of] “Teaser Removed.
Augustus”.
2.250.7 with the s[ta/at]isfaction which he Transposed.
derived
2.174.20 r[yh/hy]thm of precise and noble Transposed.
movements
2.290.10 all go quite smooth[l]y. Inserted.
2.282.17 of their conversation, Transposed.
[oc/co]mments which
2.331.5 Feuilles d’A[n/u]tomne Inverted.
2.348.12 regard[n/l]ess of any want Replaced.
*** END OF THE PROJECT GUTENBERG EBOOK THE
GUERMANTES WAY ***

Updated editions will replace the previous one—the old editions


will be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States copyright
in these works, so the Foundation (and you!) can copy and
distribute it in the United States without permission and without
paying copyright royalties. Special rules, set forth in the General
Terms of Use part of this license, apply to copying and
distributing Project Gutenberg™ electronic works to protect the
PROJECT GUTENBERG™ concept and trademark. Project
Gutenberg is a registered trademark, and may not be used if
you charge for an eBook, except by following the terms of the
trademark license, including paying royalties for use of the
Project Gutenberg trademark. If you do not charge anything for
copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such
as creation of derivative works, reports, performances and
research. Project Gutenberg eBooks may be modified and
printed and given away—you may do practically ANYTHING in
the United States with eBooks not protected by U.S. copyright
law. Redistribution is subject to the trademark license, especially
commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the


free distribution of electronic works, by using or distributing this
work (or any other work associated in any way with the phrase
“Project Gutenberg”), you agree to comply with all the terms of
the Full Project Gutenberg™ License available with this file or
online at www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand,
agree to and accept all the terms of this license and intellectual
property (trademark/copyright) agreement. If you do not agree to
abide by all the terms of this agreement, you must cease using
and return or destroy all copies of Project Gutenberg™
electronic works in your possession. If you paid a fee for
obtaining a copy of or access to a Project Gutenberg™
electronic work and you do not agree to be bound by the terms
of this agreement, you may obtain a refund from the person or
entity to whom you paid the fee as set forth in paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only


be used on or associated in any way with an electronic work by
people who agree to be bound by the terms of this agreement.
There are a few things that you can do with most Project
Gutenberg™ electronic works even without complying with the
full terms of this agreement. See paragraph 1.C below. There
are a lot of things you can do with Project Gutenberg™
electronic works if you follow the terms of this agreement and
help preserve free future access to Project Gutenberg™
electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright
law in the United States and you are located in the United
States, we do not claim a right to prevent you from copying,
distributing, performing, displaying or creating derivative works
based on the work as long as all references to Project
Gutenberg are removed. Of course, we hope that you will
support the Project Gutenberg™ mission of promoting free
access to electronic works by freely sharing Project
Gutenberg™ works in compliance with the terms of this
agreement for keeping the Project Gutenberg™ name
associated with the work. You can easily comply with the terms
of this agreement by keeping this work in the same format with
its attached full Project Gutenberg™ License when you share it
without charge with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside
the United States, check the laws of your country in addition to
the terms of this agreement before downloading, copying,
displaying, performing, distributing or creating derivative works
based on this work or any other Project Gutenberg™ work. The
Foundation makes no representations concerning the copyright
status of any work in any country other than the United States.

1.E. Unless you have removed all references to Project


Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project
Gutenberg™ work (any work on which the phrase “Project
Gutenberg” appears, or with which the phrase “Project
Gutenberg” is associated) is accessed, displayed, performed,
viewed, copied or distributed:

This eBook is for the use of anyone anywhere in the United


States and most other parts of the world at no cost and with
almost no restrictions whatsoever. You may copy it, give it
away or re-use it under the terms of the Project Gutenberg
License included with this eBook or online at
www.gutenberg.org. If you are not located in the United
States, you will have to check the laws of the country where
you are located before using this eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is


derived from texts not protected by U.S. copyright law (does not
contain a notice indicating that it is posted with permission of the
copyright holder), the work can be copied and distributed to
anyone in the United States without paying any fees or charges.
If you are redistributing or providing access to a work with the
phrase “Project Gutenberg” associated with or appearing on the
work, you must comply either with the requirements of
paragraphs 1.E.1 through 1.E.7 or obtain permission for the use
of the work and the Project Gutenberg™ trademark as set forth
in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is


posted with the permission of the copyright holder, your use and
distribution must comply with both paragraphs 1.E.1 through
1.E.7 and any additional terms imposed by the copyright holder.
Additional terms will be linked to the Project Gutenberg™
License for all works posted with the permission of the copyright
holder found at the beginning of this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files
containing a part of this work or any other work associated with
Project Gutenberg™.
1.E.5. Do not copy, display, perform, distribute or redistribute
this electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the
Project Gutenberg™ License.

1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if
you provide access to or distribute copies of a Project
Gutenberg™ work in a format other than “Plain Vanilla ASCII” or
other format used in the official version posted on the official
Project Gutenberg™ website (www.gutenberg.org), you must, at
no additional cost, fee or expense to the user, provide a copy, a
means of exporting a copy, or a means of obtaining a copy upon
request, of the work in its original “Plain Vanilla ASCII” or other
form. Any alternate format must include the full Project
Gutenberg™ License as specified in paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™
works unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or


providing access to or distributing Project Gutenberg™
electronic works provided that:

• You pay a royalty fee of 20% of the gross profits you derive from
the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt that
s/he does not agree to the terms of the full Project Gutenberg™
License. You must require such a user to return or destroy all
copies of the works possessed in a physical medium and
discontinue all use of and all access to other copies of Project
Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project


Gutenberg™ electronic work or group of works on different
terms than are set forth in this agreement, you must obtain
permission in writing from the Project Gutenberg Literary
Archive Foundation, the manager of the Project Gutenberg™
trademark. Contact the Foundation as set forth in Section 3
below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on,
transcribe and proofread works not protected by U.S. copyright
law in creating the Project Gutenberg™ collection. Despite
these efforts, Project Gutenberg™ electronic works, and the
medium on which they may be stored, may contain “Defects,”
such as, but not limited to, incomplete, inaccurate or corrupt
data, transcription errors, a copyright or other intellectual
property infringement, a defective or damaged disk or other
medium, a computer virus, or computer codes that damage or
cannot be read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES -


Except for the “Right of Replacement or Refund” described in
paragraph 1.F.3, the Project Gutenberg Literary Archive
Foundation, the owner of the Project Gutenberg™ trademark,
and any other party distributing a Project Gutenberg™ electronic
work under this agreement, disclaim all liability to you for
damages, costs and expenses, including legal fees. YOU
AGREE THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE,
STRICT LIABILITY, BREACH OF WARRANTY OR BREACH
OF CONTRACT EXCEPT THOSE PROVIDED IN PARAGRAPH
1.F.3. YOU AGREE THAT THE FOUNDATION, THE
TRADEMARK OWNER, AND ANY DISTRIBUTOR UNDER
THIS AGREEMENT WILL NOT BE LIABLE TO YOU FOR
ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL, PUNITIVE
OR INCIDENTAL DAMAGES EVEN IF YOU GIVE NOTICE OF
THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If


you discover a defect in this electronic work within 90 days of
receiving it, you can receive a refund of the money (if any) you
paid for it by sending a written explanation to the person you
received the work from. If you received the work on a physical
medium, you must return the medium with your written
explanation. The person or entity that provided you with the
defective work may elect to provide a replacement copy in lieu
of a refund. If you received the work electronically, the person or
entity providing it to you may choose to give you a second
opportunity to receive the work electronically in lieu of a refund.
If the second copy is also defective, you may demand a refund
in writing without further opportunities to fix the problem.

1.F.4. Except for the limited right of replacement or refund set


forth in paragraph 1.F.3, this work is provided to you ‘AS-IS’,
WITH NO OTHER WARRANTIES OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR
ANY PURPOSE.

1.F.5. Some states do not allow disclaimers of certain implied


warranties or the exclusion or limitation of certain types of
damages. If any disclaimer or limitation set forth in this
agreement violates the law of the state applicable to this
agreement, the agreement shall be interpreted to make the
maximum disclaimer or limitation permitted by the applicable
state law. The invalidity or unenforceability of any provision of
this agreement shall not void the remaining provisions.

1.F.6. INDEMNITY - You agree to indemnify and hold the


Foundation, the trademark owner, any agent or employee of the
Foundation, anyone providing copies of Project Gutenberg™
electronic works in accordance with this agreement, and any
volunteers associated with the production, promotion and
distribution of Project Gutenberg™ electronic works, harmless
from all liability, costs and expenses, including legal fees, that
arise directly or indirectly from any of the following which you do
or cause to occur: (a) distribution of this or any Project
Gutenberg™ work, (b) alteration, modification, or additions or
deletions to any Project Gutenberg™ work, and (c) any Defect
you cause.

Section 2. Information about the Mission of


Project Gutenberg™
Project Gutenberg™ is synonymous with the free distribution of
electronic works in formats readable by the widest variety of
computers including obsolete, old, middle-aged and new
computers. It exists because of the efforts of hundreds of
volunteers and donations from people in all walks of life.

Volunteers and financial support to provide volunteers with the


assistance they need are critical to reaching Project
Gutenberg™’s goals and ensuring that the Project Gutenberg™
collection will remain freely available for generations to come. In
2001, the Project Gutenberg Literary Archive Foundation was
created to provide a secure and permanent future for Project
Gutenberg™ and future generations. To learn more about the
Project Gutenberg Literary Archive Foundation and how your
efforts and donations can help, see Sections 3 and 4 and the
Foundation information page at www.gutenberg.org.

Section 3. Information about the Project


Gutenberg Literary Archive Foundation
The Project Gutenberg Literary Archive Foundation is a non-
profit 501(c)(3) educational corporation organized under the
laws of the state of Mississippi and granted tax exempt status by
the Internal Revenue Service. The Foundation’s EIN or federal
tax identification number is 64-6221541. Contributions to the
Project Gutenberg Literary Archive Foundation are tax
deductible to the full extent permitted by U.S. federal laws and
your state’s laws.

The Foundation’s business office is located at 809 North 1500


West, Salt Lake City, UT 84116, (801) 596-1887. Email contact
links and up to date contact information can be found at the
Foundation’s website and official page at
www.gutenberg.org/contact

Section 4. Information about Donations to


the Project Gutenberg Literary Archive
Foundation
Project Gutenberg™ depends upon and cannot survive without
widespread public support and donations to carry out its mission
of increasing the number of public domain and licensed works
that can be freely distributed in machine-readable form
accessible by the widest array of equipment including outdated
equipment. Many small donations ($1 to $5,000) are particularly
important to maintaining tax exempt status with the IRS.

The Foundation is committed to complying with the laws


regulating charities and charitable donations in all 50 states of
the United States. Compliance requirements are not uniform
and it takes a considerable effort, much paperwork and many
fees to meet and keep up with these requirements. We do not
solicit donations in locations where we have not received written
confirmation of compliance. To SEND DONATIONS or
determine the status of compliance for any particular state visit
www.gutenberg.org/donate.

While we cannot and do not solicit contributions from states


where we have not met the solicitation requirements, we know
of no prohibition against accepting unsolicited donations from
donors in such states who approach us with offers to donate.

International donations are gratefully accepted, but we cannot


make any statements concerning tax treatment of donations
received from outside the United States. U.S. laws alone swamp
our small staff.

Please check the Project Gutenberg web pages for current


donation methods and addresses. Donations are accepted in a
number of other ways including checks, online payments and
credit card donations. To donate, please visit:
www.gutenberg.org/donate.

Section 5. General Information About Project


Gutenberg™ electronic works
Professor Michael S. Hart was the originator of the Project
Gutenberg™ concept of a library of electronic works that could
be freely shared with anyone. For forty years, he produced and
distributed Project Gutenberg™ eBooks with only a loose
network of volunteer support.

Project Gutenberg™ eBooks are often created from several


printed editions, all of which are confirmed as not protected by
copyright in the U.S. unless a copyright notice is included. Thus,
we do not necessarily keep eBooks in compliance with any
particular paper edition.

Most people start at our website which has the main PG search
facility: www.gutenberg.org.

This website includes information about Project Gutenberg™,


including how to make donations to the Project Gutenberg
Literary Archive Foundation, how to help produce our new
eBooks, and how to subscribe to our email newsletter to hear
about new eBooks.

You might also like