1.	OK, I have downloaded this stuff.  What do I do now?

	A.	First, install the Steel City Comic font from
		fonts/steel-city-comic.regular.ttf. On most modern
		Linux systems, this can be done easily from your
		desktop environment, or by copying the file to the
		~/.local/share/fonts directory. You may need to run
		"fc-cache" to rebuild your font cache.

		Type "make" from the top-level directory.  If all goes
		well, this will produce a file named "perfbook.pdf",
		which prints two virtual pages per physical page.

		See FAQ-BUILD.txt for other Q's and A's related to
		build issues.

2.	Why the heck did you use this strange-looking text-based
	ca. 1980s typesetting package instead of something more
	modern, like OpenOffice?

	A.	Although latex takes a bit of getting used to, its
		automatic handling of bibliographies, tables of contents,
		figures, and tables is extremely useful for large documents.
		In addition, its text-based nature is much more compatible
		with modern source-code-control systems such as "git".

		Finally, the more-modern WYSIWYG text formatters tend
		to get a bit cranky when working with hundreds-of-pages
		documents.

3.	Where can I purchase a hardcopy of this book?

	A.	You can use any of a number of web-based printing
		services, for but one example, lulu.com.  Images suitable
		for cover art may be found in CoverFront.jpg and
		CoverBack.jpg in the cartoons directory.

		In addition, edition-level releases will be made more
		readily available in printed form.

		Finally, Chinese-language hardcopy is available, as
		called out in this blog post:

		https://paulmck.livejournal.com/47651.html

4.	This book doesn't mention my favorite parallel-programming
	tools, languages, and algorithms.  Plus its Makefile and
	Latex formatting are imperfect.  What is up with that?

	A.	Please see the following question.

5.	Can I contribute?

	A.	Of course!!!  The contribution process is similar to that
		of the Linux kernel and of the Samba project.  See the
		Documentation/SubmittingPatches file in a Linux source tree.
		The email list for discussion and review is
		perfbook@vger.kernel.org.

		Please put a "Signed-off-by:" line in your patches,
		for an example see: http://lkml.org/lkml/2007/1/15/219.

		This "Signed-off-by:" line has a very specific meaning as
		follows:

		---------------------------------------------------------

		By making a contribution to this project, I certify that:

		1.	The contribution was created in whole or in part
			by me and I have the right to submit it under
			the open source license indicated in the file; or

		2.	The contribution is based upon previous work
			that, to the best of my knowledge, is covered
			under an appropriate open source License and I
			have the right under that license to submit that
			work with modifications, whether created in whole
			or in part by me, under the same open source
			license (unless I am permitted to submit under
			a different license), as indicated in the file; or

		3.	The contribution was provided directly to me by
			some other person who certified (1), (2) or (3)
			and I have not modified it.

		4.	I understand and agree that this project and the
			contribution are public and that a record of the
			contribution (including all personal information
			I submit with it, including my sign-off) is
			maintained indefinitely and may be redistributed
			consistent with this project or the open source
			license(s) involved.

		---------------------------------------------------------

		This is similar to the DCO used for the Linux kernel,
		with the addition of #4.  This says that you wrote
		the contribution yourself, as opposed to having (say)
		copied it from somewhere.  If multiple people authored
		a contribution, each should have a "Signed-off-by:" line.

6.	May I have permission to translate this book to my native
	language?

	A.	Of course!  In any case, this permission is implicitly
		granted by the choice of the Creative Commons
		Attribution-Share Alike 3.0 United States license for
		the text and GPL for the code.

		Please keep in mind that all translations must preserve
		the licenses.

		Yang Lu (luyang.co@gmail.com) and Zhouyi Zhou
		(zhouzhouyi@gmail.com) are translating the second edition
		to Chinese.  Please contact them to contribute to their
		great work.

		People who have worked on previous Chinese translations
		include: 谢宝友(xie.baoyou172958@zte.com.cn,scxby@163.com),
		鲁阳(luyang.co@gmail.com), 陈渝(wilbur512@gmail.com),
		Cheedoong Drung (cn-boy@china.com.cn), and 王贺涛
		<wanghetaop@163.com>.

		See http://code.taobao.org/p/perfbook/src/ for more
		information on Cheedoong Drung's and 王贺涛's effort.
		For a PDF of the translation by 谢宝友, 鲁阳, and 陈渝,
		please see:

		http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook-cn.2011.10.18a.pdf

		Motohiro Kanda has a Japanese translation of Chapters 1-16
		and Appendices A-D and F based on the 2014 print edition,
		but with the "Parallel Real-Time Computing" and "Axiomatic
		Approaches" sections taken from later editions:

		https://sites.google.com/view/kandamotohiro2/perfbook

		SeongJae Park has Korean translations of the first two editions
		of this book.  The translation of the first edition contains
		some of later-first edition changes, though[*]:

		https://github.com/sjp38/perfbook-ko_KR

		[*] Refer to 'Translation Strategy and Editions' section of
		https://github.com/sjp38/perfbook-ko_KR-pdf/blob/master/README

		BHV has a Russian translation of the second edition that
		is available here, both in hardback and e-book formats:
		https://bhv.ru/product/parallelnoe-programmirovanie-tak-li-eto-slozhno/

7.	I am working on a translation.  What do I need to do to get my
	name of the list in #6 above?

	A.	Send at least one chapter of your translated work
		in machine-readable form, preferably PDF, to the
		email list called above.

8.	May I please have permission to sell hardcopies of my translated
	version of this book?

	A.	Yes, in fact, you already have permission, thanks to the
		Creative Commons and GPL licenses in use.  I do request
		that you send me one copy of the translated work
		(hardcopy if available), but that is a request made
		from professional courtesy, and is not in any way a
		requirement for the permission that you already have
		under the Creative Commons and GPL licenses.

9.	I hate Quick Quizzes!!!  Could you please get rid of them?

	A.	Quite a few people like them a lot, so they will be
		staying.  However, you can easily produce a copy of the
		book that hides the quiz part of Quick Quizzes in the
		text by "make nq".

		If the resulting perfbook-nq.pdf does not satisfy you,
		you can edit the Makefile and qqz.sty files in the
		top-level directory as you like.

		One approach is to make the "\QuickQuiz" command in
		qqz.sty be a no-op and to add line to the Makefile that
		transforms "perfbook_flat.tex" by removing the Quick
		Quizzes, each of which starts with the line "\QuickQuiz{}"
		and ends with the line "} \QuickQuizEnd".

		This transformation should happen after the invocation
		of "utilities/extractqqz.sh" in the "perfbook_flat.tex"
		Makefile rule.	This would remove the inlined Quick
		Quizzes from the running text, but retain the chapter
		containing the answers.  It should be possible to move
		each chapter's Quick Quizzes to the end of that chapter,
		but that would require more work and is left as an
		exercise to the reader.

		It is possible to move the quizzes to the ends of the
		chapters, with the answers still at the end of the book,
		or any of a number of other transformations.  "Just a
		small matter of scripting."

		More seriously, one of the advantages of making a book
		available under Creative Commons and GPL is that it
		enables similar transformations and remixes.  That said,
		one of the advantages of the current form of the Quick
		Quizzes is that this promotes faster and better learning.

10.	What is the difference between a "release" and an "edition"?

	A.	A release is a snapshot provided for readers who would
		like something reasonably up to date, but who do not wish
		to install all the pieces of LaTeX required to build one
		themselves.  Every few years, there will be a special
		release with more-consistent look and feel, and with
		fewer (and preferably no) sections under construction,
		and these special releases are called "editions".  Also,
		as noted earlier, each edition has a version that may
		be more easily printed.
