All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: October 2014
Production reference: 1201014
Published by Packt Publishing Ltd.
Livery Place 35 Livery Street Birmingham B3 2PB, UK.
ISBN 978-1-78216-066-3 www.packtpub.com
Credits
Author
Alex Libby
Reviewers
JD Isaacks
Max Mikhailov
Mathias Paumgarten
Johan Sörlin
Commissioning Editor
Jonathan Titmus
Acquisition Editor
Neha Nagwekar
Content Development Editor
Arvind Koul
Technical Editor
Pratik More
Copy Editors
Dipti Kapadia
Deepa Nambiar
Stuti Srivastava
Project Coordinator
Neha Bhatnagar
Proofreaders
Ting Baker
Maria Gould
Joanna McMahon
Indexers
Mariammal Chettiyar
Rekha Nair
Priya Sane
Production Coordinators
Komal Ramchandani
Alwin Roy
Shantanu N. Zagade
Cover Work
Alwin Roy
About the Author
Alex Libby is from an IT support background. He has been involved in supporting end users for the last 18 years in a variety of different environments, and he currently works as a technical analyst, supporting a medium-sized SharePoint estate for an international parts distributor based in the UK. Although he gets to play with different technologies in his day job, his first true love has always been with the open source movement, and in particular, experimenting with CSS/CSS3 and HTML5. To date, Alex has written several books for Packt Publishing, including a video on HTML5 and books on jQuery UI. This is his seventh book with Packt Publishing.
I'd like to thank family and friends for their help and encouragement, Arvind for his help and guidance in writing the book, and the reviewers for providing lots of constructive comments with the reviewing—without them, I am sure I wouldn't have been able to produce this book!
About the Reviewers
JD Isaacks has been a software developer for the past 8 years. Before that, he was an information systems analyst in the U.S. Army. He is a devoted husband and father, and when he isn't spending time with his family, he loves to work on all things open source. He has published several projects including a very popular Sublime Text package titled GitGutter. You can view his work at https://github.com/jisaacks.
I would like to thank my wife, Christina, for sacrificing many evenings to allow me to work on this book and all my other projects. I would also like to thank my son, Talan, just for being so awesome.
Mathias Paumgarten is a creative developer from Austria. He is currently living and working in Santa Monica, California.
Starting with a background in Flash development, Mathias found his passion for code-driven animation at a very young age. Over the years, while working for and at several agencies, he broadened his skillsets, leaving the web platform and working on installations, using low-level languages such as C and C++.
After graduating with a Bachelor's degree from the University of Applied Sciences, Salzburg, Austria, he decided to leave Austria. While focusing on modern web technologies such as HTML5 and JavaScript, he is currently working as a frontend JavaScript developer.
He has worked for several renowned agencies such as B-Reel, Soap Creative, and Firstborn, working on projects for Sony, Fox Entertainment, PepsiCo Inc., Google, HP, and many more.
As well as receiving recognition such as FWA and other awards, Mathias has also contributed to books such as HTML5 Games Most Wanted, friendsofED, and Mastering openFrameworks: Creative Coding Demystified, Packt Publishing.
Johan Sörlin is a senior application developer with 15 years of experience in web development. He cofounded Moxiecode Systems and has been the CTO of this company for the past 11 years. Here, he mainly works on open source projects such as TinyMCE, a rich text editor component used by thousands of systems.
Support files, eBooks, discount offers, and more
You might want to visit www.PacktPub.com for support files and downloads related to your book.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub. com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at service@packtpub.com for more details.
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
TM
http://PacktLib.PacktPub.com
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books.
Why subscribe?
• Fully searchable across every book published by Packt
• Copy and paste, print and bookmark content
• On demand and accessible via web browser
Free access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.
Preface
Imagine the scene if you will—it's 5 pm, late in the day, and your client wants the impossible…
You know the scene—you've created a kick-ass website, but the client isn't happy with the color of the buttons you've used on the site. They say the color shades used aren't quite there and need tweaking. A reasonable request, right? Except that there are dozens of buttons throughout the site, with most of them using different colors… Oh heck… no chance of an early finish then…
Or, is there? There is—what if we could change a handful of values and it automatically changes each button for you? Sounds crazy, right?
Wrong, it is absolutely possible. Welcome to the world of CSS preprocessors and Less! The power of Less means that we can set a couple of values that can be applied to any number of elements (such as buttons). Rather than having to change all of the buttons manually, we change the values and hit a button to recompile our code. Voilà! The code is instantly updated, and the buttons show the new color.
Throughout this book, we'll meet the Less library, learn how to use it, and apply its power to a number of real-world scenarios, such as updating buttons to build a complete theme for CMS systems, such as WordPress. We'll take a look at the subjects such as animating, color management, abstracting frameworks, and creating media queries for responsive sites.
It's going to be a great journey, full of twists and turns—the question is, are you ready? If so, let's make a start…
What this book covers
Chapter 1, Introducing Less, takes us through the roles that both HTML and CSS play, and examines the inherent limitations of using CSS as a technology. We begin our journey by taking a look at the role CSS preprocessors play and how using Less can act as a solution for some of these limiting issues.
Chapter 2, Building a Less Development Toolkit, is where we get to know Less for the first time, with a look at how we can incorporate it in our code, explore its syntax, and create some basic styles. We'll take a look at the different ways of compiling Less into valid CSS and why it is best to precompile code rather than use it dynamically in the browser.
Chapter 3, Getting Started with Less, delves into the wide range of tools and applications that are available and can be useful for working with Less; the chapter will provide some hints and tips on how to build an effective toolkit for working with Less, which you can integrate into your own development workflow.
Chapter 4, Working with Variables, Mixins, and Functions, continues from where we left off in Chapter 2, Building a Less Development Toolkit, with a look at one of the key concepts of Less, in the form of mixins. We'll take a look at this incredibly powerful tool, which will help you to save a lot of time when developing Less; we will also cover how we can create variables and functions to create our CSS styling when working with Less.
Chapter 5, Inheritance, Overriding, and Nesting in Less, examines how, with a little forethought and careful design, we can use the power of Less to create new styles based on existing ones, but without the need to duplicate the existing code. We'll also see how Less allows us to split style sheets into smaller, more manageable files, where we can group common styles together, making it easier to manage our development.
Chapter 6, Migrating Your Site to Less, contains the answer to the question asked by many developers when starting with Less: how can I incorporate it into existing sites? We'll take a look at some of the tips and tricks that we can use to gradually transition a site to use Less while still maintaining the existing CSS until it has been converted to its Less equivalent.
Chapter 7, Manipulating Fonts with Less, examines how, with some simple tricks, we can easily maintain any font style used within our site with the help of Less; we'll see how, with a little care and planning, we can make minimal changes that will quickly update font styles throughout the whole site.
Chapter 8, Media Queries with Less, takes a look at how we can use Less to quickly and effectively construct responsive sites using the power of media queries. We'll take a brief look at how media queries work and then move on to take a look at how we need to set expectations with clients and decide what should be supported, before using Less to build our queries.
Chapter 9, Working with Less in a CMS, takes us through how Less can be used to great effect when managing styles for any content management system available today. In this chapter, we'll use WordPress as our example to see how Less can first be incorporated directly in code or by using plugins. We'll then move on to the conversion process, with a look at how to transition a WordPress site to use Less, and how we can remove the need to manually compile styles with the use of a Grunt plugin.
Chapter 10, Using Bootstrap with Less, continues our journey through frameworks with a look at the popular Bootstrap system and how it uses Less to create its styles. We'll take a look at its file structure and some of the mixins it uses before configuring it for use on a demo web page as a part of developing a workflow for using Bootstrap with Less.
Chapter 11, Abstracting CSS Frameworks with Less, illustrates one of the pitfalls of using frameworks, where the supplied code can be nonsemantic and inefficient. In this chapter, we'll learn why frameworks aren't always the answer to everything and that they can make it hard to transition to a different solution if we want to change. We'll take a look at how we can use Less to help simplify complex styles, keep our HTML clean, and ultimately make frameworks work for us, and not the other way around.
Chapter 12, Color Processing with Less, covers one of the most important aspects of any website—colors! CSS styling can make maintaining colors difficult. In this chapter, we'll take a look at how we can bring the power of image processing to our CSS development with the use of Less. We'll also learn how, with a little care, we can begin to reduce our reliance on graphic packages such as Photoshop as part of our development workflow.
Chapter 13, Animation with Less, takes us on a journey to show how Less can be used to help simplify the pain experienced when animating elements and objects on a web page. In this chapter, we'll see how animations work, briefly cover the different types of animations available, and see how Less can simplify the markup, before taking a look at using our skills to produce a simple animated menu that could be used on any site.
Preface
Chapter 14, Extending and Contributing to Less, is the concluding chapter in our journey through the world of Less with a look at how we can give back to the project and help develop the library further. We'll see how to report bugs, where to find the documentation for the library, and contribute any code fixes or improvements to the library.
Appendix, Color Functions in Less, lists details of each function, within four groups of defining color formats, channeling colors, performing color operations, and blending colors.
What you need for this book
All you need to work through most of the examples in this book is a simple text or code editor, a copy of the Less library, and a browser. I recommend that you install Sublime Text—either Versions 2 or 3—as we will go through how to configure it for use with Less, both for syntax and compilation purposes.
Some of the examples make use of additional software, such as WordPress or Crunch!—the details are included within the appropriate chapter along with links to download the application from the source.
Who this book is for
The book is for frontend developers who need to quickly learn how to use Less in order to write CSS styles more efficiently with less code. To get the most out of this book, you should have a good working knowledge of HTML, CSS, and JavaScript, and ideally be comfortable with using jQuery.
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and Twitter handles are shown as follows: "In our example, we've added a reference to the Less object and then used the modifyVars method to change the color of the @button-color variable, which we've specified in object.less, to #61783F."
A block of code is set as follows: header { margin-bottom: 25px; nav { height: 25px; a { color: white } } }
When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:
Any command-line input or output is written as follows: npm install -g grunt-cli
New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: "Click on Continue to begin the installation."
Warnings or important notes appear in a box like this.
Preface
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book – what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply send an e-mail to feedback@packtpub.com, and mention the book title via the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors
Customer Support
Now that you are the proud owner of a Packt book, we have a number of things to help you get the most from your purchase.
Downloading the example code
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
Errata
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books – maybe a mistake in the text or the code – we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us to improve subsequent versions of this book.
If you find any errata, please report them by visiting http://www.packtpub.com/ support, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support
Piracy
Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at copyright@packtpub.com with a link to the suspected pirated material.
We appreciate your help in protecting our authors, and our ability to bring you valuable content.
Questions
You can contact us at questions@packtpub.com if you are having a problem with any aspect of the book, and we will do our best to address it.
Introducing Less
Are you tired of writing the same old CSS styles for client websites only to find out that you're repeating yourself? Wish you could cut down on what you write and still produce the same results…?
Well, you can. Welcome to the world of CSS preprocessors, and in particular, Less! CSS preprocessors such as Less are designed to help you reorganize your styles to smaller, more manageable chunks of reusable code that you can store and reference as and when your projects demand.
Less, designed as a superset or extension of CSS, is very much about making your development work easier—it incorporates variables and functions that are more likely to be seen in scripting languages such as JavaScript while still compiling in valid CSS. While the initial thought of working with code might scare you, you'll see that Less is really just CSS, but with some additions to help make development easier. Less will help you cut down the development time, as you can reuse code from one project in another—how much is all up to you!
In this chapter, we will cover the following topics:
• The roles of HTML and CSS, and the limitations of using CSS
• Why CSS preprocessors are needed
• Why you should use Less
• The advent of CSS4, and what this means for Less
The role of HTML and CSS
If you spend time developing websites for clients, it is likely that you will have used both HTML and CSS to create your masterpiece.
HTML, created in 1990, has been the de facto standard for placing content on a web page. Over the years, it has evolved into what we now know as HTML5, which we can use to produce some very detailed websites or online applications. To use a cooking analogy, HTML is effectively the creation of the cake base; it is content that makes sense to any Internet browser. HTML forms the base of any website available on the Internet—it won't look very exciting, but it will have all the elements you need, such as headings, paragraphs, and images, to produce well-formed pages. Well-formed pages are made up of two elements: accessibility and validation.
Accessibility is the equivalent of building a new house, where we can add ramps or make doorways wider than normal to make it accessible for everyone. Basic accessibility isn't difficult or complex, but it must become a part of the development process; when left to its own devices, it will make it harder to move around the house, for those who need extra help to do so! In tandem with accessibility comes validation, which is very much like the Physics of cooking; if we work within the rules of validation, we can produce a masterpiece, while working outside of best practices is likely to lead to disaster.
It would be hard to produce a website without some form of decoration though; using HTML alone won't produce a very exciting effect! It's for this reason that we employ CSS to add final touches to our website, where we can tweak the positioning, add animation, or alter the colors of the elements on the page. Just as you can't build a house without cement, you can't produce a website without using CSS at some point in its creation.
Using CSS does not come without its limitations though—as it has evolved over the years, the support for its functionality has changed. One can argue that it has come a long way since its incarnation back in 1996, but at its very heart, it will always suffer from some core deficiencies. Let's take a look at these in more detail.
The limitations of using CSS
If you've spent time working with CSS, you will know the pain and heartache suffered when working with CSS—and all in the pursuit of creating that perfect site! Those who are still somewhat new to working with CSS will, at some point, fall foul of some of the limitations of CSS, which include:
• CSS is heavily dependent on browser capability—it is impossible to display the same content in every browser in the same way. We can get around this, but not without the expense of having to add vendor-prefixed statements. This can lead to pages with a lot of repeated code, making them slow and difficult to maintain, where even the smallest change requires a lot of effort.
• Not every browser supports every feature within CSS—this is particularly true of CSS3. This means we need to implement some form of graceful fallback for the affected browsers if we are to maintain some form of visitor experience.
• The advent of CSS made a functionality such as columns on a magazine website much easier, although it is still not perfect. To achieve perfect columns, we will require JavaScript or jQuery to tweak the code, which makes the page less accessible (for example, making it harder for those using screen readers). It also has an effect on the use of progressive enhancement, where content should be enhanced using a functionality, such as CSS3 or jQuery, and not reliant on it.
• It is impossible to target specific ranges of content, without altering the markup to include placeholders; should these placeholders change, then the associated CSS must also change.
• We can't include a rule from one CSS style in another, nor can we name a rule—the latter of which could be used by client-side scripts, even if the selector that is being referenced changes.
By now, you're probably thinking that it is all doom and gloom when using CSS; fear not, we can fix this with the help of CSS preprocessors to help make our development more effective.
Introducing Less
The benefits of using CSS preprocessors
If you've spent time working with CSS, one of the first questions you may ask yourself is "Why do I need to use a preprocessor?" It's a valid question and you certainly won't have been the first person to ask this either! Let me explain this in more detail.
CSS is known as a declarative language—this means that the rules we use to declare what happens to an element will be the rules that the browser uses to paint the results on the screen. If, for example, we want a block of text, such as a printed comment, to be in italics, then we will use something akin to the following code:
.comment { font-style: italic; font-size: 12px; }
The browser will then render this on the screen in 12 px italicized text. This example is very straightforward—it could be used anywhere. The trouble is, we may need to specify the same styling attributes elsewhere. We could use the .comment class, but what happens if we want to change the size? Or, perhaps render the text in bold instead?
Changing the style rules to suit one element could break them for the original element, which is not ideal. Instead, we will need to create multiple style rules that apply to specific elements, but which duplicate this code—this could make for very verbose CSS! Just imagine that we end up having to create a selector such as the following:
.article #comments ul > li > a.button { ...some style rules... }
This isn't an easy selector to understand, let alone apply styling to, right? We can eliminate this issue of duplication using Less—it is possible to set one style block at the start of our Less style sheet and then reuse this style at every instance in our code, in the same way as you might use the autotext function to add predefined text to a document in Word, based on a key phrase. If we make a change, we only need to do it once—Less will automatically update our code, avoiding the need to do it manually. Imagine doing this for the dozens of buttons you might have on an e-commerce site and the benefits will soon be apparent!
Another random document with no related content on Scribd:
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.