Build Agent: Template vs Provisioning

.

For an automated build system, a typical configuration involves the separation between the build server and the build agents (some systems call it master-slave or coordinator-runner). Such a configuration allows any addition or removal of new build agents, perhaps to improve the build performance, without causing too much disruption. When it is time to spawn… Read more »

Great Teams Make History

.

The Spurs just recently won the 2014 NBA Finals with a series of convincing games. Most importantly however, they demonstrated the amazing traits of unselfishness and teamwork. It is not about getting the individual fame and glory, it is all about working together towards the common goal. Time and time again we witnessed the excellent… Read more »

The Flying Car Problem

.

Many free/open-source projects often suffer from a very specific feedback where it is assumed that a certain feature will not be implemented because of a philosophical reason. It is what I called as the "flying car" problem. As an illustration, with a lot of users and very few contributors, PhantomJS was bound to have that… Read more »

A Maturity Model for Build Automation

.

How does your engineering organization build and deliver products to its customers? Similar to the well-known capability maturity model, the maturity level of a build automation system falls into one of the following: chaotic, repeatable, defined, managed, or optimized. Let’s take a look at the differences in these levels for a popular project, PhantomJS. At… Read more »

Fast-Forward Git Merge

.

Merging a branch is a pretty common operation when using Git. In some circumstances, Git by default will try to merge a branch in a fast-forward mode. How is this different with a merge without fast-forwarding? Let us assume that I created a topic branch named speedup from the current master. After working on this… Read more »

Cross-Reference: Commit Message and Issue Tracker

.

Maintainable software projects usually take the issue tracker seriously. More often, it is used not only to monitor bugs and defects, but also to serve as a task tracker. This practice permits the cross-reference between the commit message and the associated entry in the issue tracker, thereby allowing anyone to find the in-depth reasoning or… Read more »