GNU/Linux is a special operating system for all kinds of computers. It’s special in that it wasn’t originally produced as a product to sell but rather to share. It’s Free/Libre Open Source Software. The GNU part was started ~1984 by Richard Stallman. The Linux part, the kernel that controls hardware and processes, was started ~1990 by Linus Torvalds. Richard Stallman wanted to produce a UNIX-like OS that would be free of the bloat and restrictions placed on many operating systems by money-grubbing corporations not interested in freeing the user to use hardware to the maximum. Linus Torvalds wanted a UNIX-like OS for desktop PCs so he started building the last remaining piece of the GNU puzzle. Torvalds and Stallman both shared their projects with the world using the GPL (GNU Public Licence). The rest is history. The world discovered that sharing works well in information processing and millions of developers and thousands of corporations now contribute to this ecosystem which has spawned hundreds of distributions of GNU/Linux such as Debian GNU/Linux and Ubuntu GNU/Linux and Linux-based Android/Linux which runs on everything from desktop PCs to lawnmowers.
With such a diverse background it is no wonder that in the GNU/Linux ecosystem one can find many tools useful for writing books. The computer geeks that started all this needed to document their work and created tools to do that. Later, businesses wanted smoother graphical tools such as word-processors and even office suites so there are many tools available for every task. I will list those that I use to give the reader an idea what is out there. This is by no means exhaustive. You can find what Debian distributes at packages.debian.org. Check out editors, text-processing, databases, graphics, search engines and much more
With so many choices one has to give thought to how one works. If you are a writer who does a lot of research collecting data and images, you need a means of doing all that handy to the books you write. If you need your ideas and impressions to flow from your fingertips rather than having some application tell you what to do all the time, you need tools that separate content and style. The typical word-processor won’t do it. When you create text, you don’t want to have to set any styles if they interfere with your thoughts. GNU/Linux is a true multiuser multitasking operating system. You can easily have various processes and applications dealing with all these matters running simultaneously.
For work like this blog it is quite convenient to do everything in the web browser and to run a database and blogging software on a server somewhere but that doesn’t work well for books unless you can break the book up into chapters or pages per HTML page. I use FireFox web browser, MySQL database and WordPress blog here. If you want to work on big pieces, it’s probably best to use a desktop application. Then you can easily jump around in different parts that link together and gather statistics on the whole work easily. It’s obviously faster to have the whole work in RAM (fast memory) instead of dealing with pauses in the network. For medium-sized works, a word-processor is easy and does a decent job but for a full-sized book a word-processor or office suite does not scale. The reason is that the “look” of each page is determined by what’s on all previous pages. Change one thing affecting the length of a page and all following pages have to change. Dance around in the file and it soon becomes slow and jerky, not what you want. You have to keep the “look” of the page separate from the text, the ideas. Then you just merge a list of characters, words, paragraphs, chapters or whatever and nothing else need change except what you are thinking about. You do want to be the centre of your world instead of just a slave to the technology, right?
No, the right way to work on a book or other big work is to divide it up into small pieces with a common style or completely separate the style from the writing/text/content. The former helps the computer manage but fragments your thoughts, not good. The latter is the way to go. Writing a paragraph? The computer needs only to know it is a paragraph, not the indent, font, font-effects etc. The computer can apply your settings when you are done or when you want to check how it will turn out. By doing less during the writing, the document processor will give you instant responsiveness no matter the size of the document or where you are in the document. When you do want to produce the finished document the application merely processes a list starting from the beginning in a single pass instead of wasting time constantly during the work and annoying you with pauses. Think those pauses are no problem? Imagine a 500 page book using a few thousand characters per page, a few megabytes of text. It can easily fit in RAM and be edited as fast as you can go. Imagine a 500 page book that has to be redrawn every minute all day long… Jump to the conclusion and see how much your time is worth. The speed of your CPU, hard drive and the quality of your RAM won’t help much if the whole book has to be redrawn just to determine a page number. That page number is nothing that should get in your way. It’s not part of your content that you worry about.
The solution I use is LyX. No matter if a book is 10, 100 or 1000 pages, the editing of any page is just as snappy as a single-page document. The only time LyX redraws the whole document is when you want it to do that and it looks beautiful by default.
For finding stuff to include in the book, I keep track of thousands of documents using Recoll, a Xapian search engine client. I can tune it to index only certain directories to avoid indexing stuff I don’t care about. For heavy-duty indexing of static content, I use Swish-e which can handle millions of documents. I use that for my library of 20K books. Stuff that’s in the databases such as my ~100K recipes is searched using my own script for accessing recipes. I also can search other databases generally with the database client applications.
I remember working on my master’s thesis in the bad old days of typewriters. With this technology, I could have written it in much less time using software to do all the drafting and calculations. That took me about a year back then. One month, tops, with the hardware we have today and the software available in Debian GNU/Linux.