I was probably as confused as you when I came across this book during Shakthi’s Q/A session in a Fedora meetup on a fine Saturday evening. I still have a long, long way to go to be a better contributor, but this book has certainly given some wonderful insights on how to open source and on software engineering in general. This book is a mix of a how-to guide and precious advise for newbies by someone who certainly has a lot of experience under his belt in the open source world. In a country like India, where software development is expected to put food on your table, there aren’t many who talk about open source software development in academia or even in industry, even though they regularly make use of, or even earn money from it.
The book is structured in 10 chapters, and in roughly 3 parts – The Open Source Philosophy (Chapters 1, 2 and 3), The Open Source Methodology (Chapters 4, 5, 6, 7)and The Open Source Ecosystem (Chapters 8, 9, 10). One may think that an average college computer science student is the intended reader for the book, but it is for everyone who wants to contribute as a programmer.
The first three chapters – Mailing List Guidelines, Attention to Detail and Project Communication emphasize on etiquette and discipline in being a contributor to a project. Especially the second chapter – Attention to Detail, covers many domains: from professional writing to writing code and from reading between the lines to reading the logs. Project Communication is in a similar vein to the first chapter and contains communication guidelines once a person has started contributing.
Chapters 4,5,6 and 7 discuss the nitty-gritties of software development. Chapter 4, titled Project Guidelines contains sections on how to get into and start working on an open source project. It also contains one of my favourite quotes from the author – “Persist and survive. Everyone has gone through the same steep learning curve and you are no different”. Words to live by.
Chapter 5 dives into the actual coding process. One can find some good code snippets in this chapter. These are presented as companion examples to some of the most important practical aspects in software development such as ‘the divide and conquer policy’ , exception handling, writing test cases and using the right tools.
Chapters 6 and 7 are about the Methodology of Work and the Tools used respectively. The discussion over various ‘post-initial development’ concepts like packaging and bug fixing. Again one can find many code snippets in this chapter as examples to the accompanying theory. The next chapter titled ‘Tools’ deals with, well, Tools. It contains a lot of references for various applications for say IRC, Wiki, Blogging, Email, Build Tools and so on.
Chapters 8, 9 and 10 discuss more on the creative concepts . Chapter 8 titled Reading and Writing contains some good pointers (and references) for improving reading and writing , technical or otherwise. Chapter 9 is all about making and improving your presentations. It is really important for good developers to know how to get their ideas through to their audience. Chapter 10, aptly called Sustenance, is about growing in the community and open source evangelism.
Open source software presents a wonderful opportunity for a person to learn and connect to people from different cultures and traditions. I think it is a wonderful opportunity to give back to the community. Given we probably underestimate the power of open source software in our daily lives, this book is probably one of the best practical guides I have read. Reading this, I get a feeling that software engineering is much more than writing code. It is about being a good engineer and beyond that, being a good person.
This book is timeless, and not just for Shakthi’s own thoughts, but also for the references he cites. I can only imagine the sheer amount of reading he would have gone through in the process. A ‘teaser’ for this book can be found here.
Thanks Shakthi Kannan for a wonderful book!
Here is the signed copy of the book with my setup 🙂