Women's Health: Essential Tips for Every Stage.pdfIftikhar Ahmed
Ad
JavaScript Design Patterns Hugo Di Francesco
1. JavaScript Design Patterns Hugo Di Francesco pdf
download
https://ebookmass.com/product/javascript-design-patterns-hugo-di-
francesco/
Explore and download more ebooks at ebookmass.com
2. Here are some recommended products for you. Click the link to
download, or explore more at ebookmass.com
Analysis and Design of Prestressed Concrete Di Hu
https://ebookmass.com/product/analysis-and-design-of-prestressed-
concrete-di-hu/
Design patterns: elements of reusable object-oriented
software Gamma
https://ebookmass.com/product/design-patterns-elements-of-reusable-
object-oriented-software-gamma/
JavaScript T. J. Crowder
https://ebookmass.com/product/javascript-t-j-crowder/
Architecting ASP.NET Core Applications Carl-Hugo Marcotte
https://ebookmass.com/product/architecting-asp-net-core-applications-
carl-hugo-marcotte/
3. Learning Web Design: A Beginner’s Guide to HTML, CSS,
JavaScript, and Web Graphics 5th Edition, (Ebook PDF)
https://ebookmass.com/product/learning-web-design-a-beginners-guide-
to-html-css-javascript-and-web-graphics-5th-edition-ebook-pdf/
The Transhumanist Movement Francesco Paolo Adorno
https://ebookmass.com/product/the-transhumanist-movement-francesco-
paolo-adorno/
Oxford Textbook of Cancer Biology Francesco Pezzella
https://ebookmass.com/product/oxford-textbook-of-cancer-biology-
francesco-pezzella/
Eloquent JavaScript 4th Edition Marijn Haverbeke
https://ebookmass.com/product/eloquent-javascript-4th-edition-marijn-
haverbeke/
Blue Hunger Viola Di Grado
https://ebookmass.com/product/blue-hunger-viola-di-grado/
7. Published by Packt Publishing Ltd.
Grosvenor House
11 St Paul’s Square
Birmingham
B3 1RB, UK
ISBN 978-1-80461-227-9
www.packtpub.com
8. To my wife, Amalia, for being my first supporter in all my endeavors. To my daughter, Zoë, for
making me want to show that the impossible sometimes is.
9. – Hugo Di Francesco
Contributors
About the author
Hugo Di Francesco is a software engineer who has worked extensively with JavaScript. He holds an
MEng degree in mathematical computation from University College London (UCL). He has used
JavaScript across the stack to create scalable and performant platforms at companies such as Canon
and Elsevier, and in industries such as print on demand and mindfulness. He is currently tackling
problems in the travel industry at Eurostar with Node.js, TypeScript, React, and Kubernetes, while
running the eponymous Code with Hugo website. Outside of work, he is an international fencer, in
the pursuit of which he trains and competes across the globe.
10. I want to thank all the people who have supported me in my life and writing journey,
particularly my wife Amalia, and my family.
About the reviewers
Dr. Murugavel, a distinguished and versatile educator in the realms of computer science engineering
and information technology. With over 13 years of enriching experience at renowned universities and
an additional 8+ years dedicated to the dynamic field of data analytics, Dr. Murugavel stands as a
beacon of expertise at the intersection of academia and technology.
His journey is marked by successive achievements, particularly in handling core subjects and
programming languages, with a keen emphasis on practical knowledge. As a mentor and guide for
major projects, Dr. Murugavel actively engages in groundbreaking research within his specialized
field. His commitment to bridging theory and application has made him a valuable resource for
students and researchers alike.
His technical proficiency extends across a spectrum of disciplines. He is well-versed in full stack web
development, SQL, data analytics, Python, and BI tools, showcasing theoretical knowledge and a
hands-on understanding of these technologies. His extensive portfolio includes the development of
numerous applications using JSP, ASP, and ASP.NET, reflecting his prowess in both frontend and
backend development.
In the realm of databases, he demonstrates versatility across MS-SQL Server, MySQL, MongoDB,
Django, MS Access, Oracle, and FoxPro. His proficiency in various Integrated Development
Environments (IDEs) and tools such as Anaconda, Visual Studio, GitHub, JBuilder, JCreator,
MATLAB, Sublime 3, and Adobe Dreamweaver further solidifies his standing in the technological
landscape.
In the realm of data science and Business Intelligence (BI) tools, his skills are extensive,
encompassing PowerBI, DAX, VBA Macros for Excel, SSAS, and SSIS. His ability to harness these
tools illuminates the path to insightful data analysis and visualization.
Shubham Thakur, a dynamic senior software engineer (A3 grade) at EPAM, specializes in
technologies such as JavaScript, Angular, Next.js, Node, MySQL, MongoDB, AWS Cloud, and IoT.
His expertise in these domains has significantly contributed to his project successes. He expresses
deep gratitude to Priya for her unwavering love and to his brother, Yash, for his constant support.
Shubham also acknowledges the profound impact of his mentors, Avnish Aggarwal, Yogesh
Dhandekar, and Amit Jain, whose guidance has been instrumental in shaping his professional
11. journey. Their mentorship has not only honed his technical skills but also enriched his approach to
complex problem-solving in the tech industry.
13. Part 1: Design Patterns
1
Working with Creational Design Patterns
What are creational design patterns?
Implementing the prototype pattern in JavaScript
Implementation
A use case
The singleton pattern with eager and lazy initialization in
JavaScript
Implementation
Use cases
Improvements with the “class singleton” pattern
A singleton without class fields using ES module behavior
The factory pattern in JavaScript
Implementation
Use cases
Improvements with modern JavaScript
Summary
2
Implementing Structural Design Patterns
Technical requirements
What are structural design patterns?
Implementing the Proxy pattern with Proxy and Reflect
A redaction proxy implementation
14. Use cases
Improving the proxy pattern in JavaScript with the Proxy and
Reflect global objects
Decorator in JavaScript
Implementation
Use cases
Improvements/limitations
Flyweight in JavaScript
Implementation
Use cases
Improvements/limitations
Adapter in JavaScript
Use cases
Improvements/limitations
Summary
3
Leveraging Behavioral Design Patterns
Technical requirements
What are behavioral design patterns?
The observer pattern in JavaScript
Implementation
Use cases of the observer pattern
Limitations and improvements
State and strategy in JavaScript and a simplified approach
Implementation
Use cases of the state and strategy patterns
Limitations and improvements
15. Visit https://ebookmass.com today to explore
a vast collection of ebooks across various
genres, available in popular formats like
PDF, EPUB, and MOBI, fully compatible with
all devices. Enjoy a seamless reading
experience and effortlessly download high-
quality materials in just a few simple steps.
Plus, don’t miss out on exciting offers that
let you access a wealth of knowledge at the
best prices!
17. Part 2: Architecture and UI Patterns
4
Exploring Reactive View Library Patterns
Technical requirements
What are reactive view library patterns?
The render prop pattern
Use cases
Implementation/example
Limitations
The higher-order component pattern
Implementation/example
Use cases
Limitations
The hooks pattern
An implementation/example
Use cases
Limitations
The provider pattern
Use case – the prop drilling problem
An implementation/example
Limitations
Summary
5
Rendering Strategies and Page Hydration
18. Technical requirements
Client and server rendering with React
Client-side rendering in React
Server rendering in React
Trade-offs between client and server rendering
Static rendering with Next.js
Automatic static generation
Static generation with a third-party data source
Static generation with dynamic paths
Page hydration strategies
Common React rehydration issues
React streaming server-side rendering
Summary
6
Micro Frontends, Zones, and Islands Architectures
Technical requirements
An overview of micro frontends
Key benefits
“Classic” micro frontend patterns
Other concerns in a micro frontend world
Composing applications with Next.js “zones”
Root app
Adding a /search app
Adding /checkout app
The benefits/supporting team scaling
The drawbacks of Next.js zones
19. Scaling performance-sensitive pages with the “islands”
architecture
Islands setup with is-land
Product island
Cart island
A related products island
Scaling with a team – bundling islands
Drawbacks
Summary
20. Part 3: Performance and Security Patterns
7
Asynchronous Programming Performance Patterns
Technical requirements
Controlling sequential asynchronous operations with
async/await and Promises
Parallel asynchronous operation patterns
Asynchronous cancellation and timeouts with AbortController
Throttling, debouncing, and batching asynchronous operations
Summary
8
Event-Driven Programming Patterns
Technical requirements
Optimizing event listeners through event delegation
Patterns for secure frame/native WebView bridge messaging
Event listener performance antipatterns
Summary
9
Maximizing Performance – Lazy Loading and Code
Splitting
Technical requirements
Dynamic imports and code splitting with Vite
21. Route-based code splitting and bundling
Loading JavaScript on element visibility and interaction
Summary
10
Asset Loading Strategies and Executing Code off the
Main Thread
Technical requirements
Asset loading optimization – async, defer, preconnect, preload,
and prefetch
Using Next.js Script’s strategy option to optimize asset loading
Loading and running scripts in a worker thread
Summary
Index
Other Books You May Enjoy
22. Preface
Welcome! JavaScript design patterns are techniques that allow us to write more robust, scalable, and
extensible applications in JavaScript. JavaScript is the main programming language available in web
browsers and is one of the most popular programming languages with support beyond browsers.
Design patterns are solutions to common problems that can be reused. The most-written-about design
patterns come from the world of object-oriented programming.
JavaScript’s attributes as a lightweight, multi-paradigm, dynamic, single-threaded language give it
different strengths and weaknesses to other mainstream programming languages. It’s common for
software engineers to use JavaScript in addition to being well versed in a different programming
language. JavaScript’s different gearing means that implementing design patterns verbatim can lead
to non-idiomatic and under-performing JavaScript applications.
There are many resources on JavaScript and design patterns, but this book provides a cohesive and
comprehensive view of design patterns in modern (ECMAScript 6+) JavaScript with real-world
examples of how to deploy them in a professional setting. In addition to this complete library of
patterns to apply to projects, this book also provides an overview of how to structure different parts
of an application to deliver high performance at scale.
In this book, you will be provided with up-to-date guidance through the world of modern JavaScript
patterns based on nine years of experience building and deploying JavaScript and React applications
at scale at companies such as Elsevier, Canon, and Eurostar, delivering multiple system evolutions,
performance projects, and a next-generation frontend application architecture.
23. Who this book is for
This book is for developers and software architects who want to leverage JavaScript and the web
platform to increase productivity, software quality, and the performance of their applications.
Familiarity with software design patterns would be a plus but is not required.
The three main challenges faced by developers and architects who are the target audience of this
content are as follows:
They are familiar with programming concepts but not how to effectively implement them in JavaScript
They want to structure JavaScript code and applications in a way that is maintainable and extensible
They want to deliver more performance to the users of their JavaScript applications
24. What this book covers
Chapter 1, Working with Creational Design Patterns, covers creational design patterns, which help to
organize object creation. We’ll look at implementing the prototype, singleton, and factory patterns in
JavaScript.
Chapter 2, Implementing Structural Design Patterns, looks at structural design patterns, which help
to organize relationships between entities. We’ll implement the proxy, decorator, flyweight, and
adapter patterns in JavaScript.
Chapter 3, Leveraging Behavioral Design Patterns, delves into behavioral design patterns, which
help to organize communication between objects. We’ll learn about the observer, state, strategy, and
visitor patterns in JavaScript.
Chapter 4, Exploring Reactive View Library Patterns, explores reactive view libraries, such as React,
which have taken over the JavaScript application landscape. With these libraries come new patterns
to explore, implement, and contrast.
Chapter 5, Rendering Strategies and Page Hydration, takes a look at optimizing page performance,
which is a key concern nowadays. It’s a concern both for improving the on-page conversion of
customers and search engine optimization, since search engines such as Google take core web vitals
into account.
Chapter 6, Micro Frontends, Zones, and Islands Architectures, explores micro frontends. Akin to the
microservices movement in the service tier, micro frontends are designed to split a large surface area
into smaller chunks that can be worked on and delivered at higher velocity.
Chapter 7, Asynchronous Programming Performance Patterns, looks at how JavaScript’s single-
threaded event-loop-based concurrency model is one of its greatest strengths but is often
misunderstood or under-leveraged in performance-sensitive situations. Writing asynchronous-
handling code in JavaScript in a performant and extensible manner is key to delivering a smooth user
experience at scale.
Chapter 8, Event-Driven Programming Patterns, explores how event-driven programming in
JavaScript is of paramount importance in security-sensitive applications as it is a way to pass
information from and to different web contexts. Event-driven applications can often be optimized to
enable better performance and scalability.
Chapter 9, Maximizing Performance – Lazy Loading and Code Splitting, deals with how, in order to
maximize the performance of a JavaScript application, reducing the amount of unused JavaScript
25. being loaded and interpreted is key. The techniques that can be brought to bear on this problem are
called lazy loading and code splitting.
Chapter 10, Asset-Loading Strategies and Executing Code off the Main Thread, looks at how there
are situations in the lifecycle of an application where loading more JavaScript or assets is inevitable.
You will learn about asset-loading optimizations in the specific case of JavaScript, as well as other
web resources, and finally how to execute JavaScript off the main browser thread.
To get the most out of this book
You will need to have prior experience with JavaScript and developing for the web. Some of the
more advanced topics in the book will be of interest to developers with intermediate experience in
building for the web with JavaScript.
Software/hardware covered in the book Operating system requirements
Node.js 20+ Windows, macOS, or Linux
NPM v8+ Windows, macOS, or Linux
ECMAScript 6+ Windows, macOS, or Linux
React v16+ Windows, macOS, or Linux
Next.js Windows, macOS, or Linux
If you are using the digital version of this book, we advise you to type the code yourself or
access the code from the book’s GitHub repository (a link is available in the next section).
Doing so will help you avoid any potential errors related to the copying and pasting of code.
Download the example code files
You can download the example code files for this book from GitHub at
https://github.com/PacktPublishing/JavaScript-Design-Patterns. If there’s an update to the code, it
will be updated in the GitHub repository.
We also have other code bundles from our rich catalog of books and videos available at
https://github.com/PacktPublishing/. Check them out!
26. Visit https://ebookmass.com today to explore
a vast collection of ebooks across various
genres, available in popular formats like
PDF, EPUB, and MOBI, fully compatible with
all devices. Enjoy a seamless reading
experience and effortlessly download high-
quality materials in just a few simple steps.
Plus, don’t miss out on exciting offers that
let you access a wealth of knowledge at the
best prices!
29. 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.
30. 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:
31. 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™.
32. 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
33. 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
34. 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.
35. 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.
36. 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
37. 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
38. 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.
39. Welcome to our website – the perfect destination for book lovers and
knowledge seekers. We believe that every book holds a new world,
offering opportunities for learning, discovery, and personal growth.
That’s why we are dedicated to bringing you a diverse collection of
books, ranging from classic literature and specialized publications to
self-development guides and children's books.
More than just a book-buying platform, we strive to be a bridge
connecting you with timeless cultural and intellectual values. With an
elegant, user-friendly interface and a smart search system, you can
quickly find the books that best suit your interests. Additionally,
our special promotions and home delivery services help you save time
and fully enjoy the joy of reading.
Join us on a journey of knowledge exploration, passion nurturing, and
personal growth every day!
ebookmasss.com