PDF Creator – about project and development process
Tuesday, October 28th, 2008Hi,
In this article I describe the organization of the PDF Creator project and the tools that we use to develop and promote the product.
Development Tools
1. Subversion (SVN) Control
The life of a programmer would be unbearable without a source control manager
. As of this writing, we have executed 2387 commits in the PDF Creator project using the Tortoise SVN, (http://tortoisesvn.tigris.org/). Since every mistake would cost a lot, we try to follow this rule – one that we would recommend to everyone: Always commit smaller portions of the code. Every commit must correspond to a single task!
This way it is (a) easier to find an error during rollbacks (every commit changes a small amount of source code), (b) often easy to discover an error before the commit just by looking at it, and (c) easier for colleagues to be aware of the changes in the source code, since all they have to do is read the comments and look at the smaller portions of the code.
Of course, this is not possible in all cases, and sometimes we do have to perform huge commits. Still this is a rule worth following. After all, it is one of the refactoring rules: Change smaller portions of the code, preserving its workability between sessions.
Two more source-control rules:
- There must always be two versions in the SVN – a version that compiles and a workable version. It is easy to create code that compiles, but the real aim is its correctness.
- Text comments should be supplied to every commit. This is also a good way to check whether the commit implements only a single task. If a comment describes several targets instead of just one, the rule has been violaled.
2. Bug Tracker
We use Mantis (http://www.mantisbt.org/). PDF Creator is the base for a number of other products – converters, virtual printer, etc. (See http://www.colorpilot.com/developer.html) The number of its users is much higher than the count of those who purchased the base product. We needed to simplify communications between the developers and the users of the products.