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 »

Continuous Monitoring of JavaScript Code Complexity

.

Complicated code is difficult to digest and hard to maintain. The best way to avoid it is by not having it at the first place. For web applications written in JavaScript, fortunately we have enough tooling machinery to detect complex code and block it from the source repository. Analyzing code complexity is rather easy these… Read more »

Hard Thresholds on JavaScript Code Coverage

.

With the popularity of test-driven development (TDD), running a project which does not include an automated test workflow is often frown upon. The recent trend pushes it further: if the code coverage is not measured and monitored during that testing, the confidence level will not be very high. For JavaScript projects, how do we keep… Read more »