Here is a short wrap-up of tools I used for writing my thesis.
Subversion. A must.
Provides: version control, backup, distribution.
Really, any other version control tool will do. I chose SVN, because I was already familiar with it. I set up (svn+ssh) repository to backed-up Linux servers at school, so I didn’t have to care about backups either. The repository is also recommended for people with multiple computers, as it allows easy retrieval and submission of work from any of them.
LaTeX. Viable alternative for WYSIWYG.
Provides: document preparation & typesetting.
I chose to use LaTeX mainly for learning; I hadn’t used it before. I guess I spent about the same time figuring out how to use LaTeX, as I would have spent fighting with OpenOffice (or Microsoft Office). I also estimate that learning LaTeX was much more fun that fighting with OpenOffice would have been. Writing LaTeX is as easy as writing HTML, so if you answer yes to “Would you like to write your thesis with HTML”, you’ll love LaTeX.
Graphviz. Optional.
Provides: graphs.
Graphviz converts textual representations of graphs to graphical presentation of graphs. In other words, you describe what kind of graph you want, and graphviz makes an image of it. Feel free to check out, if you feel like “coding” your graphs.
MagicDraw. Optional.
Provides: Software diagrams.
About the only non-OS tool in the chain. Used for drawing architecture and sequence diagrams of the sample software.
make. Recommended if using LaTeX and Graphviz.
Provides: automation.
Knits together bits and pieces of latex, graphviz and anything else you need to make the pdf.
Apache. Optional.
Provides: Distribution.
Basically, nightly cron job was set up to make deliveries to certain folder, shared with Apache to the world (supervisors and audience of my thesis). In my case, the access was restricted with .htaccess user/password scheme, just to keep bots out of work-in-progress thesis. The job had many tasks; create a tarball of thesis source, compile a pdf of thesis, create a tarball of thesis software, create changelogs of thesis and its software, and to create weekly snapshot of the thesis.