Appendix . Colophon

We tried to approach the development of this book like we would a software project. We wanted to make our lives easier by using well-tested open source tools, especially ones that enable group collaboration. None of what we did is radical or fancy, but in the world of print publishing, there’s still a surprising reliance on a workflow that boils down to e-mail attachments in a certain proprietary word processor format, and we wanted to break free from that. For the curious, here’s a list of the most important open source tools we used during the preparation, writing, and editing of this book.

For version control of our manuscript and project files, we used Subversion (with a little Git and Mercurial for flavor). It’s hard to list all the ways in which using version control makes this sort of work better, but here are some of them: complete history of the project; ability to work in parallel, even in different sections of the same file, without stepping on each other’s toes; and the security of a complete copy of the project in at least four places at all times.

Trac, the lightweight software project management system written in Python, gave us convenient tracking of changes, as well as wiki-based shared notes. The combination of Trac and Subversion (or any one of the other version-control backends supported through contributed plugins) is very powerful, even for a (largely) non-code project like ours. There’s nothing like a colorized diff to give you a feeling for how much work you got done that day or to help you see exactly what got changed in the latest round of edits.

Our manuscript was made up of multiple plain text files created and edited using Vim on Win32 or Linux machines and TextMate on Macs. They were written using the Markdown text markup system, which made it easy to generate HTML, PDF®, and other output formats as needed. Markdown was chosen because it focuses on readability and minimalistic semantic markup, both of which really matter when you are writing. To compile our text files (.txt or .mkd), we ran the seminal make utility, which executed Markdown-Python (along with the Wrapped Tables [wtables] extension), compiling all the text files into HTML.

For internal communication, we used a mailing list powered by Mailman, the mailing list manager written in Python. In addition to providing the core mailer services, Mailman also archived each message, so we could go back and refer to them without having to worry about keeping them within our e-mail clients.

Operating systems with sophisticated package management are a blessing when writing about a complicated software ecosystem. Need to install SQLite? Memcached? Mako? PostgreSQL? Apache? No problem. We benfitted from the excellent package management systems built into the Debian, Ubuntu, and FreeBSD operating systems, as well as the MacPorts system for OS X.

That the Python language is a key player here too almost goes without saying. In addition to the obvious, we also used Python in support of our quality control efforts. Simple Python scripts parsed our manuscript files, testing interactive Python examples embedded in manuscript files using the doctest module, and updating the code samples we drew from larger, working applications. Python code was also used to scan all manuscript files and generate updated Table of Contents text files so at any time we could see our progression. Python was also used to execute the Markdown-Python compiler that coverted our text files to HTML. All three of us have been lucky enough to be able to use Python extensively in our professional work, and we wish you the same.

Our Makefile also contained directives to collate the produced content, such as combining all the HTML into a single manuscript file, compressing content into ZIP archives, opening each HTML file in separate Web browser windows, and also generating PDF files (with the help of the html2ps [not the PHP one; the other one] and Ghostscript’s ps2pdf filters).

Last but not least, we “ate our own dog food” by creating the book’s Web site with Django!

The bridge on the cover is Erasmus Bridge in Rotterdam, Netherlands.

The Netherlands is also the birthplace of Guido van Rossum, creator of the Python language. Django, too, serves as a bridge connecting the potentially wild world of Web application development to everyday people who want to publish online without having to worry about writing complex server code, SQL statements, or what “MVC” stands for.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.21.246.123